Typescript在检查不同类型时有非常酷的错误信息:
let strange_boolean = true;
let strange_string: string = "1";
console.log(strange_boolean == strange_string);
error: TS2367 [ERROR]: This condition will always return 'false' since the types 'boolean' and 'string' have no overlap.
console.log(strange_boolean == strange_string);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
但是这段代码会编译:
let strange_boolean: any = true;
let strange_string: string = "1";
console.log(strange_boolean == strange_string);
因为可以将any
转换为anything
...
但是如果我想以某种方式禁用从any
到任何东西的隐式转换怎么办?Typescript
对此有什么标志吗?我希望这段代码只在这种情况下编译:
let strange_boolean: any = true;
let strange_string: string = "1";
console.log(String(strange_boolean) == strange_string);
或
let strange_boolean: any = true;
let strange_string: string = "1";
console.log(Boolean(strange_boolean) == Boolean(strange_string));
发布于 2020-07-16 12:08:44
不幸的是,目前还没有这样的可能性。
我已经创建了issue https://github.com/microsoft/TypeScript/issues/39209,但它被关闭了,因为Typescript团队不想破坏any
的反向可比性,这是不幸的,因为如果他们添加这个标志,那么代码就会变得比"Vanilla“JavaScript更安全
https://stackoverflow.com/questions/62523205
复制相似问题