我有data它的类型是ItemDTO. 我想将它传递给一个接受类型参数的函数Item。
Typescript 抱怨这可能是一个错误,因为这两种类型没有充分重叠,并且如果有意转换为unknown第一种类型。
为什么这有效?unknown将类型转换为第一个有效的类型是什么?
另一种说法是:
function foo(arg: Item){}
const data: ItemDTO = {key: 123}
const results = foo(data as Item) // this doesn't work
const alternative = foo((data as unknown) as Item) // this works
Run Code Online (Sandbox Code Playgroud)
bas*_*rat 81
A as B如果A可以分配给BORB可以分配给 则A有效。
data as Itemdata仅当可以分配给Item或Item可以分配给data时才有效。因为这不是真的,所以data as Item是一个错误。
data as unknown之所以有效,是因为任何东西都可以分配给unknown,因此也data可以分配给unknown。=> 1
unknown as Item之所以有效,是因为任何东西都可以分配给unknown,因此也Item可以分配给unknown。=> 2
data as unknown as Item有效,因为 1 && 2 是允许的。
这称为双重断言。
unknown输入:https ://www.youtube.com/watch?v=wOa67sZyO54| 归档时间: |
|
| 查看次数: |
31539 次 |
| 最近记录: |