有没有办法禁用任何与其他类型的比较?
Is there a way to disable comparison any vs other type?
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));
很遗憾,目前没有这种可能性......(
我已经创建了问题 https://github.com/microsoft/TypeScript/issues/39209,但它被关闭了,因为 Typescript 团队不想打破 any
的向后可比性,这很不幸,因为如果他们添加这个标志,那么代码就会变成比“原版”更安全 JavaScript
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));
很遗憾,目前没有这种可能性......(
我已经创建了问题 https://github.com/microsoft/TypeScript/issues/39209,但它被关闭了,因为 Typescript 团队不想打破 any
的向后可比性,这很不幸,因为如果他们添加这个标志,那么代码就会变成比“原版”更安全 JavaScript