gpt4 book ai didi

typescript:import 和 var 有什么区别

转载 作者:搜寻专家 更新时间:2023-10-30 21:11:07 25 4
gpt4 key购买 nike

我在同一个文件夹中有两个文件:

/src/routes/file1.ts

/src/routes/file2.ts

文件1.ts

function greet(name: srting){
return 'Hello +' name
}

export = greet;

file2.ts(引用 file1)

var f2 = require('./file1');

function another_greeting(name: string)
{
return f1.greet(name) + name;
}

exports f2;

此配置有效,没问题。但是如果在 file2 中我这样指向 file1

import f1 = require('./file1')

编译器提示错误:找不到模块'./file1'这让我不禁要问:用“import”语句和“var”语句导入外部文件有什么区别?

最佳答案

基本区别在于,当您使用 import 时,TypeScript 编译器 (TSC) 检查文件 ./file1 是否可以通过以下方式找到基于 TypeScript 编译器配置(我的意思主要是 --module flag )!如果您仅使用 var f2 = require('./file1');,则 TypeScript 不会进行此类检查。

您可以从测试中看到 TSC 如何为 commonjs 模块和 AMD 模块转译关键字 import:

CommonJS: https://github.com/Microsoft/TypeScript/blob/master/tests/baselines/reference/commonjsSafeImport.js

AMD: https://github.com/Microsoft/TypeScript/blob/master/tests/baselines/reference/amdImportNotAsPrimaryExpression.js

tests/baselines/reference中还有许多其他测试文件夹。

所以在你的情况下,import 应该被翻译成 var

为什么它不起作用?那么,以下在我的电脑上工作:

file1.ts:

function greet(name: string){
return 'Hello ' + name;
}

export = greet;

file2.ts:

import f1 = require('./file1');

function another_greeting(name: string)
{
return f1(name) + name;
}

console.log(another_greeting('test'));

我这样编译脚本:

c:\Work\TypeScript-playground>tsc --module commonjs --target es5 file2.ts

然后像这样运行:

c:\Work\TypeScript-playground>node file2.js

关于typescript:import 和 var 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33487536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com