`type-fest`中IsEqual的类型是什么?

问题描述 投票:0回答:1

我正在使用 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给出。

typescript typechecking
1个回答
0
投票

有两件事可能会让您感到困惑:

  1. IsEqual<T, S>
    是一个Utility函数,类似于TypeScript中的
    Pick
    ReturnType
    。它接受两组(类型)值并产生第三种类型(根据定义
    boolean
    )。
  2. 每个值都有类型,但类型没有值。

正确的使用方法是:

  • 使用
    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);
}

© www.soinside.com 2019 - 2024. All rights reserved.