打字稿 - 了解导出/导入

mp9007

我正在学习打字稿。我读过关于命名空间和import/ 的文章export

在我自己的项目中,我创建了一些类。由于这是我的第一个项目,我忘记将export关键字放在其中一些文件上,但我注意到它们仍然可以在其他文件中访问而无需导入它们。我还注意到一个带有导入的类需要导出/导入才能在其他地方使用。

为什么我可以这样做?这样做可以吗?什么时候export强制使用,什么时候不使用?

我想我应该总是export/import我的类和模块,但是没有它们代码也能工作。

class CoordinateModel {
    public x: number;
    public y: number;
    constructor(x: number, y: number) {
        this.x = x;
        this.y = y;
    }
}

在另一个文件中,我可以使用它

import * as d3 from "d3";

module Mouse {
    export function getMousePosition(container:d3.ContainerElement): CoordinateModel {
        var m = d3.mouse(container);
        return new CoordinateModel(m[0], m[1]);
    }

    export function showMousePositionInElement(elementClassName: string, container: d3.ContainerElement) {
        var m = Mouse.getMousePosition(container);
        d3.select("." + elementClassName).html(m.x + ", " + m.y);
    }
}

export = Mouse;
亚伦·比尔

如果您的文件没有顶级importexport语句,那么它在全局范围内,这意味着所有顶级项目在任何地方都可见,不需要import任何东西。

这基本上是 ES6 模块出现之前的旧 JavaScript 做事方式。旧的 TypeScript module(现在称为namespace)语法是一种在全局范围内避免名称冲突的方法。编写模块的新 JavaScript(和 TypeScript)方式是使用importexport语法。

所以是的,现在你应该这样做 export class CoordinateModel,在这种情况下,其他文件需要import从文件中获取它,而不是依赖它在全局范围内。在大多数情况下,您不需要namespace(您编写的内容module Mouse,也可以namespace Mouse使用最新的语法编写,旨在消除 ES6 模块的歧义)。您可以在文档中阅读有关命名空间和模块的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

了解打字稿界面

来自分类常见问题

打字稿导入/ as与导入/要求?

来自分类Dev

打字稿导出默认功能

来自分类Dev

导出打字稿中的模块

来自分类Dev

打字稿从 tsd 导出重要

来自分类Dev

打字稿重复导入“时刻”

来自分类Dev

打字稿无法扩展导入

来自分类Dev

如何使用打字稿文件导入/导出类型定义

来自分类Dev

了解打字稿类中的“公共” /“私人”

来自分类Dev

导出打字稿功能“缺少通话签名”

来自分类Dev

猫鼬+打字稿->导出模型界面

来自分类Dev

打字稿:SyntaxError:意外的令牌“导出”

来自分类Dev

在svelte文件中导出打字稿类型

来自分类Dev

导出打字稿功能“缺少通话签名”

来自分类Dev

打字稿导出语法和代码结构

来自分类Dev

类引用的打字稿导出类型

来自分类Dev

打字稿包中的意外令牌导出

来自分类Dev

从外部节点模块导入打字稿

来自分类Dev

打字稿-导入核心功能

来自分类Dev

打字稿,Requirejs,导入语句和别名

来自分类Dev

打字稿导入文件夹

来自分类Dev

打字稿导入的对象未定义

来自分类Dev

导入静态函数打字稿

来自分类Dev

eslint导入/排序反应打字稿

来自分类Dev

打字稿路径导致错误导入

来自分类Dev

Azure生产打字稿导入失败

来自分类Dev

从外部节点模块导入打字稿

来自分类Dev

如何导入打字稿中的类型定义?

来自分类Dev

连接打字稿中的导入URL