我有一些TypeScript文件:

MyClass.ts

class MyClass {
  constructor() {
  }
}
export = MyClass;

MyFunc.ts

function fn() { return 0; }
export = fn;

MyConsumer.ts

import * as MC from './MyClass';
import * as fn from './MyFunc';
fn();

这使我尝试使用新的错误

Module “MyClass” resolves to a non-module entity and cannot be imported using this construct.

当尝试调用fn()

Cannot invoke an expression whose type lacks a call signature.

是什么赋予了?

解决方法

为什么它不起作用
import * as MC from './MyClass';

这是ES6 / ES2015风格的导入语法.其确切含义是“从./MyClass加载的模块命名空间对象并将其本地用作MC”.值得注意的是,“模块命名空间对象”仅由具有属性的普通对象组成. ES6模块对象不能作为一个函数或新的被调用.

再说一遍:ES6模块命名空间对象不能作为一个函数或新的调用.

使用*作为X从模块导入的东西被定义为只具有属性.在下级的Commonjs中,这可能不会被完全尊重,但是TypeScript会告诉你标准定义的行为.

什么工作?

您需要使用Commonjs风格的导入语法才能使用此模块:

import MC = require('./MyClass');

如果您同时控制这两个模块,可以使用导出默认值:

MyClass.ts

export default class MyClass {
  constructor() {
  }
}

MyConsumer.ts

import MC from './MyClass';

我很伤心规则是愚蠢的

这将是很好的使用ES6导入语法,但现在我必须这样做导入MC = require(‘./ MyClass’);事情?这是2013年!瘸!但悲伤是编程的正常部分.请跳到库伯勒 – 罗斯模型的第五阶段:验收.

这里的TypeScript告诉你这不工作,因为它不起作用.有一些黑客(为MyClass添加一个命名空间声明是一种流行的方式来假装这个工作),并且它们今天可能在你的特定的下级模块绑定器(例如汇总)中工作,但这是虚幻的.在野外没有任何ES6模块实现,但永远不会是真的.

展现未来的自我,试图运行在一个neato本机ES6模块实现,并发现您已经设置了自己的重大失败,尝试使用ES6语法来做一些ES6显然不做的事情.

我想利用我的非标准模块加载器

也许你有一个模块加载器,当没有存在时,“有帮助”创建默认导出.我的意思是,人们为了理由而制定标准,但忽略标准是有趣的,我们可以认为这是一件很酷的事情.

将MyConsumer.ts更改为:

import A from './a';

并指定allowSyntheticDefaultImports命令行或tsconfig.json选项.

请注意,allowSyntheticDefaultImports根本不会更改代码的运行时行为.它只是一个告诉TypeScript的标志,当不存在时,您的模块加载器创建默认导出.它不会神奇地使您的代码工作在nodejs以前没有.

typescript – “…解析为非模块实体,无法使用此构造导入”是什么意思?的更多相关文章

  1. 使用typescript类型实现ThreeSum

    这篇文章主要介绍了使用typescript类型实现ThreeSum,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以一下,希望对你学习又是帮助

  2.  typeScript入门基础介绍

    这篇文章主要介绍了 typeScript入门基础,TypeScript 是由微软开发的开源、跨平台的编程语言,是 javaScript 的超集,最终被编译为 javaScript代码。常常被简称为TS支持JS、ES语法,下文将继续其他基础介绍,需要的朋友可以参考一下

  3. typescript返回值类型和参数类型的具体使用

    本文主要介绍了typescript返回值类型和参数类型的具体使用文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  4. Vue3 携手 TypeScript 搭建完整项目结构

    TypeScript 是JS的一个超级,主要提供了类型系统和对ES6的支持,使用 TypeScript 可以增加代码的可读性和可维护性,在 react 和 vue 社区中也越来越多人开始使用TypeScript,这篇文章主要介绍了Vue3 携手 TypeScript 搭建完整项目结构,需要的朋友可以参考下

  5. 关于TypeScript开发的6六个实用小技巧分享

    TypeScript是Javascrip t超集,支持静态类型检测,可以在编译期提前暴露问题,节省debug时间,下面这篇文章主要给大家介绍了关于TypeScript开发的6六个实用小技巧,需要的朋友可以参考下

  6. typescript+react实现移动端和PC端简单拖拽效果

    这篇文章主要为大家详细介绍了typescript+react实现移动端和PC端简单拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  7. Vue3 TypeScript 实现useRequest详情

    本文介绍了Vue3 TypeScript实现useRequest详情,useRequest可能是目前社区中最强大,最接地气的请求类 Hooks了。可以覆盖99%的网络请求场景,无论是读还是写,无论是普通请求还是分页请求,无论是缓存还是防抖节流,通通都能支持,关于其介绍需要的小伙伴可以参考一下

  8. Typescript中的数据类型实例总结

    ts中数据类型的定义是重点之一,所以必须明确ts有哪些数据类型,下面这篇文章主要给大家介绍了关于Typescript中数据类型的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

  9. TypeScript遍历Array的方法(for,forEach,every)

    本文主要介绍了TypeScript遍历Array的方法(for,forEach,every),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  10. TypeScript 数组Array操作的常用方法

    本文主要介绍了TypeScript 数组Array操作的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部