我第一次尝试使用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中遇到某种限制?
答案 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个特定值,但fn2
和fn3
也可以使用该值。