当前,如果我从类似以下的内容编译流/打字稿文件
// @flow
function foo(x: number): string {
if (x) {
return String(x);
}
return "default string";
}
module.exports = foo;
到以下:
function foo(x ) {
if (x) {
return String(x);
}
return "default string";
}
module.exports = foo;
我的问题是,是否存在一种将代码转换为类似以下内容的方法?
function foo(x) {
// preserve typechecking
if (typeof x !== "number")
throw new Error(`Expected x to be of type <number> instead got <${typeof x}>!!!!`);
if (x) {
return String(x);
}
return "default string";
}
答案 0 :(得分:2)
不幸的是,Microsoft团队已决定在编译后不保留类型检查,因为这样做违反了他们的设计目标。这是GitHub上的issue thread。
Microsoft has stated在“非目标”部分的#5中,将不会添加/依赖此功能。
但是,在计数时添加参数类型检查并不是很困难。
function printMessage(message: string) { if (typeof message != "string") throw new Error("printMessage(message): message must be a string."); else { console.log(message); } }
我想指出的是,这不是javascript专门设计的。对抗谷物有时会引起更多的头痛。