代码之家  ›  专栏  ›  技术社区  ›  Nurbol Alpysbayev

Typescript:可视化类型,即显示类型的签名

  •  1
  • Nurbol Alpysbayev  · 技术社区  · 6 年前

    变量的 价值,我们只是做 console.log(someVar)

    类型 ?

    type SomeUnion = 'foo' | 'bar' | 'baz'
    
    console.log(SomeUnion) 
    // of course above will not work, but what will do?
    // is there any TS tool that I am missing?
    

    另外,对于那些可能不明白为什么需要这个的人,这里有一个更复杂的类型(来自 TS docs ):

    type FunctionPropertyNames<T> = { [K in keyof T]:
    T[K] extends Function ? K : never }[keyof T];
    
    interface Part {
        id: number;
        name: string;
        subparts: Part[];
        updatePart(newName: string): void;
    }
    
    type T40 = FunctionPropertyNames<Part>;  // "updatePart"
    

    let foo: T40 = 'bar' // gives error: type "bar" is not assignable to type "updatePart"
    

    换句话说,知道类型标识符背后隐藏着什么的唯一方法是生成一个类型错误,而这不应该是唯一的方法。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Matt McCutchen    6 年前

    如果你使用 playground current caveat )或者像visualstudio代码这样支持TypeScript语言服务的IDE,您只需将鼠标悬停在 T40 type T40 = FunctionPropertyNames<Part>; 以查看类型的扩展。