【问题标题】:Difference between `import from` and `import require` in TypeScriptTypeScript 中 `import from` 和 `import require` 的区别
【发布时间】:2016-10-05 17:03:52
【问题描述】:

我使用 node.js,最近决定试一试 TypeScript,但我对如何导入模块有点困惑。我看到两种不同的语法,但我不知道它们到底有什么区别:

import * as a from 'a'; // ES6 standard to import stuff
// OR ...
import a = require('a');

这些是一样的吗?如果不是,我应该在哪里使用它们?

【问题讨论】:

    标签: node.js typescript ecmascript-6


    【解决方案1】:

    import * as a from 'a'; 是新的“ES6 风格”导入语法(从 Typescript 1.5 开始可用)。

    现在应尽可能使用此语法。

    但有一个警告。 ES6 导入语法只能导入模块(由 ES6 定义)或作为模块的一部分导出的对象(类、接口、变量...)。

    一些 Javascript 库会直接导出一个函数或类,对应的定义文件通常如下所示:

    declare module "my-class" {
    
        class MyClass { ... }
    
        export = MyClass
    } 
    

    在这种情况下,“旧”导入语法是唯一可以使用的语法

    import MyClass = require("my-class");
    

    不使用此语法将导致错误 TS2497

    查看this issue 了解详细信息和可能的解决方法,在前一种情况下,将空模块声明添加到定义文件中

    declare module "my-class" {
    
        class MyClass { ... }
    
        module MyClass {} // <=
    
        export = MyClass
    } 
    

    【讨论】:

    • 当 require 适用于所有情况(看起来)为什么我应该使用 import from 语法呢?
    • @Rsh 因为你希望尽可能多地兼容 ES6,因此 Typescript 仍然是 Javascript 的超集,而不是它的语言。
    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2021-11-14
    • 2019-06-07
    • 1970-01-01
    • 2019-03-03
    • 2018-03-22
    相关资源
    最近更新 更多