foo.ts的内容:
let a: Person = new Person();
bar.ts的内容:
class Person {}
tsconfig.json文件包含由tsc --init
创建的默认值集。
我使用的是打字稿版本2.6.2。
上面的代码只编译没有关于Person
未定义的错误。如果我在foo.ts中将Person
重命名为Persons
,则会发出错误cannot find name 'Persons'
。所以它好像是以某种方式自动导入这个文件。
另请注意,我没有在bar.ts中导出Person
类。如果我确实添加了一个导出语句,那么一切都应该如此 - 我收到一个错误cannot find name 'Person'
。
有谁知道这里发生了什么?这是用户错误吗?
编辑:
也许这在浏览器中是有意义的,但对我来说这种行为在node.js应用程序中没有任何意义。是否有禁止此行为的Typescript标志?
答案 0 :(得分:1)
你的bar.ts不是一个模块,因为它没有任何导入或任何导出。因此它定义了一个全局Person类,它不需要导入,因为它是全局的。导出它,TypeScript会抱怨缺少导入。
答案 1 :(得分:0)
编译器标志align = "center"
将确保所有.ts文件都是模块。通过在dataURItoBlob(dataURI) {
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
var blob = new Blob([ab], {type: mimeString});
return blob;
}
或--isolatedModules
添加foo.ts
和bar.ts
模块后,import
类将不再是全局的。
然而,这并未解决以下类似问题: https://github.com/Microsoft/TypeScript/issues/18232#issuecomment-359200157