如何在TypeScript中导出/导入仅类型定义

时间:2018-11-28 12:33:39

标签: typescript flowtype

如何独立于模块本身导出和导入类型定义。

在flowtype中,它看起来像这样: 文件sub.js使用myType导出类型export type myType = {id: number};,文件main.js使用import type {myType} from './sub.js';导入类型

2 个答案:

答案 0 :(得分:2)

Typescript 3.8及更高版本仅具有进出口类型:

https://devblogs.microsoft.com/typescript/announcing-typescript-3-8/#type-only-imports-exports

import type { SomeThing } from "./some-module.js";

export type { SomeThing };

答案 1 :(得分:1)

您只需正常导入它,编译器就会得出结论,因为未使用任何具体代码,因此不需要发出import语句。

这是一个例子:

component.ts

export interface MyInterface {
    name: string;
}

app.ts

import { MyInterface } from './component';

class MyClass implements MyInterface {
    constructor(public name: string) { }
}

app。 js 文件很简单(ES2015版本):

class MyClass {
    constructor(name) {
        this.name = name;
    }
}

或以较旧的ES5术语:

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var MyClass = /** @class */ (function () {
    function MyClass(name) {
        this.name = name;
    }
    return MyClass;
}());

这里重要的是TypeScript编译器已经计算出仅在编译时才需要导入,而在运行时则不需要。