首页 > 解决方案 > 将数组值提取为 Typescript 类型

问题描述

基本上有没有办法将数组值提取为字符串类型?这是伪代码:

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

type ArrayKeys = P in A['keys'] // 'name' or 'age'

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

标签: typescript

解决方案


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

之后,它相当简单:

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

type ArrayKeys = A['keys'][number];

操场上

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


推荐阅读