gpt4 book ai didi

typescript - 为什么 TypeScript 中的 'X' + Y = 'XY' ?预计会出现错误

转载 作者:行者123 更新时间:2023-12-02 17:57:48 25 4
gpt4 key购买 nike

我试图了解 TypeScript 及其工作原理,所以这是一个非常简单的示例:

const X: string = '5';
const Y: number = 6;
console.log(X+Y) // output '56' ! why not an error ? and why not 11 ?

对于 JavaScript,这样的结果是可以接受的,但是由于 TypeScript 的设计目的是避免逻辑错误,为什么它不介意我们尝试将“字符串”附加到“数字”上。从逻辑上讲,即使对于串联来说,这也是没有意义的。另外为什么默认过程是将 Y 视为字符串并连接为什么不尝试将 X 转换为数字并添加?

最佳答案

TypeScript 的原则之一是“您现有的工作 JavaScript 代码也是 TypeScript 代码”[ link ].

现有的 JavaScript 代码中有很多类似这样的代码:

const x = '5';
const y = 6;
console.log(x + y); // '56'

并且确实期望 JavaScript 的行为。如果 TypeScript 强制开发人员更改上述内容,这将成为迁移的重大障碍。 (建议它输出 11 是不可能的;如果将文件从 .js 重命名为 .ts,我们就不能信任 TypeScript可能会引入只能在运行时检测到的错误。)

现在,您可能想要反对您的代码有所不同,因为您使用变量的类型显式注释了变量。但是 TypeScript 提供了类型推断,如果这样的话,那将是一个可怕的困惑

const x : string = '5';

产生的变量与行为略有不同

const x = '5';

语言设计总是涉及权衡,TypeScript 决定为了兼容性而保留一些 JavaScript 怪癖。

关于typescript - 为什么 TypeScript 中的 'X' + Y = 'XY' ?预计会出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75250854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com