小编db9*_*035的帖子

打字稿代码中的 T[number] 是什么意思?

首先在http://www.typescriptlang.org/docs/handbook/advanced-types.html#example-1 中找到了代码

然后在打字稿代码库中找到了这个类似的代码:https : //github.com/microsoft/TypeScript/blob/master/tests/cases/conformance/types/conditional/conditionalTypes1.ts#L75

type KnockoutObservable<T> = { object: T };
type KnockoutObservableArray<T> = { array: T };

type KnockedOut<T> = T extends any[] ? 
                       KnockoutObservableArray<T[number]> : 
                       KnockoutObservable<T>;

type KnockedOutObj<T> = {
    [P in keyof T]: KnockedOut<T[P]>;
}
Run Code Online (Sandbox Code Playgroud)

代码中的 T[number] 是什么意思?

在打字稿手册示例中,它说

数组的元素类型为 T[number]

在操场上测试时(仅用于测试),替换T[number]TT[any]似乎没有什么不同,但不能替换为T[string](为什么?)。

[number]T,似乎不是一个索引。

typescript typescript-generics

6
推荐指数
1
解决办法
723
查看次数

为什么“让”声明符号会转换为 TypeScript 中的字符串索引签名?

使用时let s = Symbol()把该符号声明作为对象的密钥,如:

let a = { [s]:1 }
Run Code Online (Sandbox Code Playgroud)

的类型a将自动变为,{[x:string]:number}而尝试索引时会出错a[s]

类型“符号”不能用作索引类型 (2538)

而 useconst s = Symbol()声明是工作 as become to {[s]:number}

typescript typescript-typings

0
推荐指数
1
解决办法
54
查看次数