TypeScript / JavaScript - 导入所有类型
Posted
技术标签:
【中文标题】TypeScript / JavaScript - 导入所有类型【英文标题】:TypeScript / JavaScript - import all types 【发布时间】:2016-07-17 12:45:24 【问题描述】:如何从某个文件导入所有类型?
假设我有myClass.ts
和otherClass.ts
。
我想从otherClass.ts
导入所有类。
我见过很少的导入语法。
import ClassA, ClassB, ClassC from 'otherClass';
import * as foo from 'otherClass';
import foo = require('otherClass');
import 'rxjs/Rx';
第一个需要我列出所有内容。我想导入所有类型。
第二种语法需要命名空间前缀:foo.ClassA
。
我知道最后一个是 TypeScript 1.4,但仍然支持。
有没有类似下面的东西?
import * from "otherClass";
...
var x = new ClassA()
另外, ...
的含义是什么?有些类型在外面,有些在里面?
documentation 没有任何暗示。
【问题讨论】:
【参考方案1】:使用 ES6 模块,最接近您想要的东西是命名空间导入:
import * as foo from './otherClass';
将其单独导出为
foo.ClassA
您可以在import
documentation 中查看可用的导入类型。
另外, ... 的含义是什么?有些类型在外面,有些在里面?
这是用于导入命名导出。您可以在我引用的文档或my answer here 中阅读相关内容。
【讨论】:
但这不适用于类型或接口,是吗?我会对处理这些的等效方式非常感兴趣。 @DanielM 是的。您只需要确保从正在导入的文件中导出类型和接口即可。 太棒了,谢谢!不需要更深入的研究,只是我的测试太简单了——我输入的是“foo”。在茫茫荒野中,期待 VS Code 向我推荐类型;然后尝试显式输入“foo.SomeType”,当然,我得到了一个错误。如果放置得当,它就像一个魅力:) 你好,有没有办法导入所有没有别名的接口。例如像这样;从'./index'导入* @DavidSherret 是否有像在 CSharp/VB .NET 中那样导入命名空间的概念,我没有拼写 Foo.Method() 只是 Method() 或引用通过import * as Page1Models from './Page1Models/
导入的枚举在正确的上下文中如此冗长是相当令人讨厌的。【参考方案2】:
您可以使用三斜杠导入:
/// <reference path="./actionsCollection.ts" />
它们必须位于文件的第一行。
-
When do I need a triple slash reference?
https://www.typescriptlang.org/docs/handbook/triple-slash-directives.html
【讨论】:
以上是关于TypeScript / JavaScript - 导入所有类型的主要内容,如果未能解决你的问题,请参考以下文章