导出单个或多个类型

时间:2016-05-10 22:03:23

标签: javascript typescript

我第一次尝试使用TypeScript(以及该事实的模块)。我得到了模块背后的原则,但每当我尝试导出type时,我似乎遇到了问题。

例如,给出以下内容:

export type typeOne = "A" | "B" | "C" | "D";

编译时基本上给我空输出,在生成的文件中只留下"use strict",我不明白。

我最初开始尝试做的是在enum对象中导出多个Constants类型:

export Constants {
    type typeOne = "A" | "B" | "C" | "D";
    type typeTwo = "X" | "Y" | "Z";
}

但似乎我甚至无法让基本案例发挥作用。我错过了一些非常明显的东西,还是我在TypeScript中遇到某种限制?

1 个答案:

答案 0 :(得分:1)

由于javascript不是一种打字语言,因此在编译过程中会删除所有声明的类型。

您定义的类型只是编译器将根据特定值集检查的字符串。

这三个功能:

function fn1(value: "A" | "B" | "C"): boolean {
    return value === "A" || value === "B" || value === "C";
}

function fn2(value: string): boolean {
    return value === "A" || value === "B" || value === "C";
}

function fn3(value): boolean {
    return value === "A" || value === "B" || value === "C";
}

将编译为相同的js函数:

function fnN(value) {
    return value === "A" || value === "B" || value === "C";
}

不同之处在于编译时间(以及任何普通的IDE):

fn1("no good");

将导致编译错误,因为传递的字符串既不是我们定义的3个特定值,但fn2fn3也可以使用该值。