我正在第一次尝试 TypeScript(以及为此而设计的模块)。我了解模块背后的原理,但每当我尝试导出 type
时,我似乎遇到了问题。
例如,给出以下内容:
export type typeOne = "A" | "B" | "C" | "D";
编译时基本上给了我空输出,在生成的文件中只剩下一个我不理解的“use strict”
。
我最初开始尝试做的是在 Constants
对象中导出多个 enum
类型:
export Constants {
type typeOne = "A" | "B" | "C" | "D";
type typeTwo = "X" | "Y" | "Z";
}
但似乎我什至无法让基本案例发挥作用。我是否遗漏了一些非常明显的东西,或者我是否遇到了 TypeScript 中的某种限制?
最佳答案
由于 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
可以使用该值。
关于javascript - 导出单个或多个类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37149731/