【问题标题】:TypeScript - What does importing and exporting interfaces as type do?TypeScript - 导入和导出接口作为类型做什么?
【发布时间】:2021-08-09 06:35:48
【问题描述】:

TS 文档提到了接口和类型别名,但我似乎找不到太多关于将接口导入或导出为 type 的信息,并希望得到一些澄清:

例如一个接口可以导出为:

// located in ./MyInterface.ts
export interface MyInterface
{
    foo: string;
    bar: () => number;
}

export type {MyInterface as MyInterfaceType}

它可以导入为:
import {MyInterface} from "./MyInterface"

import type {MyInterface} from "./MyInterface"

import {MyInterfaceType} from "./MyInterface"

import type {MyInterfaceType} from "./MyInterface"

谁能解释每个接口导入之间的行为差​​异?

【问题讨论】:

    标签: typescript types import interface export


    【解决方案1】:

    TypeScript 3.8 为 type-only imports and exports 添加了新语法

    export type { MyInterface as MyInterfaceType }
    

    仅导出带有别名MyInterfaceTypeMyInterface 类型。

    export type 仅提供可用于类型上下文的导出,并且也从 TypeScript 的输出中删除。

    export interface MyInterface
    {
        foo: string;
        bar: () => number;
    }
    

    这是一个名为 export 的 ECMAScript 2015 模块。

    从 ECMAScript 2015 开始,JavaScript 有了模块的概念。 TypeScript 分享了这个概念。

    任何声明(如变量、函数、类、类型别名或接口)都可以通过添加 export 关键字来导出。

    Exporting a declaration

    【讨论】:

    • 首先,非常感谢您提供指向“仅类型导入和导出”的链接。我永远不会发现自己!但是接口不会从 TypeScript 输出中删除吗?我认为接口本质上是可以由其他接口扩展和/或由类实现的类型。虽然文字 types 类似于接口,但它们不能扩展(但可以通过联合)并绑定到对象或原语?
    猜你喜欢
    • 2018-07-02
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2017-05-31
    • 2021-01-31
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多