我想知道如何使用a regular JavaScript array作为输入脚本界面的可能字符串列表,因此它的行为将如下所示:

interface MyInterface {
  name: "x"|"y"|"z"
}

但我想不出如何正确地映射names的值:

const names = [`x`, `y`, `z`] as const;

interface MyInteface {
    name: (typeof names)[string] // ERROR: Type 'readonly ["x", "y", "z"]' has no matching index signature for type 'string'.
}

const myTest: MyInteface = {
    name: `x`
}

我认为这是可能的.有谁有主意吗?

Thanks!

推荐答案

问题来自于您试图使用string来索引namesarray.您不使用字符串来索引数组,而是使用数字,对吗?做出快速改变,它应该会像预期的那样起作用.

const names = [`x`, `y`, `z`] as const;

interface MyInteface {
    name: typeof names[number];
}

const myTest: MyInteface = {
    name: `x`
}

Typescript相关问答推荐

如何将绑定到实例的类方法复制到类型脚本中的普通对象?

如何使用属性作为具有Generics的TypScript类中的类型守护?

Angular 17 -如何使用新的@if语法在对象中使用Deliverc值

VS代码1.88.0中未出现自动导入建议

如何在使用`Next—intl`和`next/link`时导航

在TypeScrip中分配回调时,参数的分配方向与回调本身相反.为什么会这样呢?

具有泛型类型和缺省值的键

PrimeNG日历需要找到覆盖默认Enter键行为的方法

是否有一个版本的联合类型递归地使属性只出现在一个可选选项中?

CDK从可选的Lambda角色属性承担角色/复合主体中没有非空断言

为什么S struct 类型化(即鸭子类型化)需要非严格类型联合?

Typescript -返回接口中函数的类型

map 未显示控制台未显示任何错误@reaction-google-map/api

错误TS7030:并非所有代码路径都返回值.";由tsfig.json中的";Strong";:False引起

在TypeScript中,如何通过一系列过滤器缩小类型?

在类型脚本中创建显式不安全的私有类成员访问函数

为什么类型脚本使用接口来声明函数?他的目的是什么.

作为参数的KeyOf变量的类型

如何在Vue动态类的上下文中解释错误TS2345?

如何创建允许使用带有联合类型参数的Array.from()的TS函数?