我正在使用 TypeScript 编写并使用
type-fest
进行一些额外的类型检查。
以下代码:
function type_fest_is_equal_assertion<T, S>(): void {
let R: IsEqual<T, S> = true; // *
console.log(R);
}
…在用星号 (
*
) 注释的行处失败:
类型“boolean”不可分配给类型“IsEqual
”
错误消息对我来说毫无意义。我认为
IsEqual
是一个类型别名,其计算结果为布尔类型:true 或 false。我应该如何阅读此错误消息才能使其有意义?
顺便说一句,编写上述函数的动机在here给出。
有两件事可能会让您感到困惑:
IsEqual<T, S>
是一个Utility函数,类似于TypeScript中的Pick
、ReturnType
。它接受两组(类型)值并产生第三种类型(根据定义boolean
)。正确的使用方法是:
const
代替 let
。boolean
的 R
类型断言,因为 IsEqual<T, S>
返回布尔类型function type_fest_is_equal_assertion<T, S>(): void {
const R = IsEqual<T, S>; // <-- R is of type boolean
console.log(R);
}