我不希望将特定函数作为参数传递给另一个函数,但是根据TypeScript它是有效的,但是它呢?为什么?
这是代码示例:
function spoken(nope?: never): void {
console.log("He has spoken.");
}
function speak(toSay: string, spoken: (arg1: string) => void): void {
console.log("He says: " + toSay);
spoken("He has spoken.");
}
speak("Hello world.", spoken);
因为基本上,TypeScript说类型字符串可以分配给类型never,因为如果nope是说类型号,TypeScript会抱怨因为类型字符串与类型号不兼容 .
1 回答
简答
是的,它是有效的,因为TypeScript说类型
never
可以分配给string
类型 . 这是some code in typescript/play来演示 .永远的细节
Basic Types documentation说:
这意味着我们可以将
never
分配给string
但不能将string
分配给never
.您的情况详情
您的
speak
函数有一个名为spoken
的参数,该参数具有arg1
类型的arg1
参数 . 这是spoken
参数 .由于
arg1
是string
且string
是never
的超类型,因此以下赋值有效 .