【问题标题】:Import vs Require in Typescript打字稿中的导入与要求
【发布时间】:2017-02-01 03:56:31
【问题描述】:

在浏览 Angular2 文档时,我在here 中遇到了以下代码。

src/polyfills.ts

import 'core-js/es6';
import 'core-js/es7/reflect';
require('zone.js/dist/zone');

if (process.env.ENV === 'production') {
 // Production
} else {
 // Development
Error['stackTraceLimit'] = Infinity;
require('zone.js/dist/long-stack-trace-zone');
}

在上面的代码中,我们可以看到有import 和require 语句。

“core-js”和“zone.js”都是节点模块。

我的问题是;为什么import 用于core-js 而require 用于“zone.js”,有什么具体原因吗?

【问题讨论】:

    标签: node.js typescript


    【解决方案1】:

    对于 TypeScript,如果有模块的声明文件(参见 Declaration Files in basarat's book),则可以使用 import。

    如果没有声明文件,TypeScript 编译器不知道模块是否存在,所以你需要使用require 代替,它缺少编译检查。

    【讨论】:

    • 我不确定这是否正确,因为我观察到对于“core-js/es7/reflect”,只有 .js 文件存在,没有 .ts 或 .d.ts 文件
    • 在您提供的链接的顶部,查看“typings.json”部分。已包含 core-js 的类型,这将提供 .d.ts 文件:)
    • zone.js 现在包含一个 .d.ts 文件,可以使用 import 导入
    • 有没有办法让 Visual Studio 进行 import->from over require? alt+enter 总是执行 require
    猜你喜欢
    • 2016-06-12
    • 2012-11-03
    • 2020-04-19
    • 2023-02-09
    • 2016-06-14
    • 2017-05-08
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多