TypeScript / JavaScript - 导入所有类型

Posted

技术标签:

【中文标题】TypeScript / JavaScript - 导入所有类型【英文标题】:TypeScript / JavaScript - import all types 【发布时间】:2016-07-17 12:45:24 【问题描述】:

如何从某个文件导入所有类型?

假设我有myClass.tsotherClass.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 - 导入所有类型的主要内容,如果未能解决你的问题,请参考以下文章

直接从 TypeScript 调用 JavaScript

什么是typescript?

TypeScript VS JavaScript 深度对比

TypeScript VS JavaScript 深度对比

Typescript 和 Javascript之间的区别

第一章 Typescript 介绍