gpt4 book ai didi

typescript 文字类型和加法赋值运算符

转载 作者:行者123 更新时间:2023-12-02 04:19:50 25 4
gpt4 key购买 nike

对于 typescriptliteral types ,无论我们使用常规加法运算符(例如 a = a + b )还是加法赋值运算符(例如 a += b ),行为都是不同的:

type SomeLiteralType = 1;

let a: SomeLiteralType = 1;

// Why is it possible to change the value of Literal type to unsupported value without any error?
a += 1;

// Now it's even not allowed to assign to itself - next error occurs: "Type 'number' is not assignable to type '1'"
a = a;

因此,最终使用加法赋值运算符,我们可以强制变量包含意外值。

字符串也是如此。

这是预期的行为,我错过了文档中的某些内容吗?

最佳答案

1) c += b;a += a;是,相对于类型检查过程相等。
可以在 4) 中找到解释。 .

2) d = d + b;该表达式将由编译器解释如下:
赋值表达式:
左侧:d token (运算符(operator)):= 右侧:d + b为了检查两边的类型,编译器对左右表达式的类型进行了扣除。
如果是左侧,它很简单。
对于右侧,它将是数字。
原因是所有数学运算符(+-、...)只能使用数字(在 jJavaScript 中),因此结果也必须是数字类型。
带扣类型Odd在左边和右边的数字你会得到你的错误。

3) e = a + a;与上面的行相同的原因( 2) )

4) a += a;这个表达式归结如下:
赋值表达式:
左侧:a token (运算符(operator)):+= 右侧:a由于我们从上面知道,所有数学运算符只能应用于数字,
这应该是不言自明的。编译器检查左边是否为数字,
其中a是,如果右边是一个数字。 a1是数字,所以它有效。

为什么最后一行有效,现在应该很清楚了,我会把它作为作业留给你;)

关于 typescript 文字类型和加法赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61194535/

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