提取数组值作为Typescript类型

Hiv*_*aga 2 typescript

基本上有一种方法可以将数组值提取为字符串类型?这是伪代码:

class A
{
    public keys = ['name', 'age']
}

type ArrayKeys = P in A['keys'] // 'name' or 'age'
Run Code Online (Sandbox Code Playgroud)

如何将ArrayKeys缩小为A ['keys']的可能值。

Mad*_*iha 8

您将需要keys通过添加as const强制转换来确保TypeScript 不会改变(否则,TypeScript将仅假定它是一个字符串数组),请注意,这将使TypeScript强制执行此操作。您将无法更改阵列。

之后,这非常简单:

class A
{
    public keys = ['name', 'age'] as const
}

type ArrayKeys = A['keys'][number];
Run Code Online (Sandbox Code Playgroud)

在操场上

[number]部分是对数组值的“访问”。(Array<T>)[number]永远是T