Typescript 键入脚本和索引器的兼容性?

Typescript 键入脚本和索引器的兼容性?,typescript,Typescript,我有一个方法签名,它期望第二个参数keyof-Array。 由于Array接口定义了一个索引器[n:number]:T我希望能够以某种方式引用方法中的某个索引 但我不知道怎么做。 我尝试了以下方法: MyMethod(myArray, 0); // Argument of type '0' is not assignable to parameter of type ... MyMethod(myArray, [0]); // Argument of type 'number[]' is not

我有一个方法签名,它期望第二个参数
keyof-Array
。 由于
Array
接口定义了一个索引器
[n:number]:T我希望能够以某种方式引用方法中的某个索引

但我不知道怎么做。 我尝试了以下方法:

MyMethod(myArray, 0); // Argument of type '0' is not assignable to parameter of type ...
MyMethod(myArray, [0]); // Argument of type 'number[]' is not assignable to parameter of type ...
MyMethod(myArray, '0'); // Argument of type '"0"' is not assignable to parameter of type ...
MyMethod(myArray, '[0]'); //  Argument of type '"[0]"' is not assignable to parameter of type ...
而且没有一个起作用。

您可以尝试:

function myFun<T>(arr: Array<T>, index: number) {
  return arr[index];
}
考虑一个更简单的接口:

interface Arr<T> {
  [n: number]: T;
}

const variable: keyof Arr<number>; // variable is of type "never"
接口Arr{
[编号]:T;
}
常量变量:keyof Arr;//变量的类型为“从不”
这实际上是语言的一个缺陷。另见:

我们不能(有效地)列出所有这些数字字符串文字
keyof Container
将是
number | numericString
,其中
numericString
作为具有相应数字文本的所有数字字符串文本的类型<代码>数字|字符串
不正确,因为并非每个
字符串
都是
数字字符串
。此外,并非每个数字字符的字符串序列都是
numbericString
,因为数字有最大值和最小值

interface Arr<T> {
  [n: number]: T;
}

const variable: keyof Arr<number>; // variable is of type "never"