【问题标题】:How to restrict string parameter to some keyof alue如何将字符串参数限制为某个键值
【发布时间】:2021-04-26 02:04:42
【问题描述】:

我正在使用 TypeScript 中的 Array.some 函数。我需要限制可能接收到的字符串作为某些对象的键。

表单示例我有一个包含对象属性名称的数组,并且我的对象实现了一个接口:

    const props = ["a", "b", "c"]

    interface A {
        a: any,
        b: any,
        c: any
    }

然后我调用 some 函数

    props.some( (prop) => {
        // ...
    })

我试过了:

    props.some( (prop: keyof A) => {
        // ...
    })

但我收到“类型字符串不可分配给类型 keyof A”

这通常是如何解决的?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    定义数组时,定义as const,使其类型化为元组,其成员都是A的键,这样它就不会自动扩展为string[]

    const props = ["a", "b", "c"] as const;
    

    然后

    props.some( (prop) => {
    

    prop 输入为'a' | 'b' | 'c'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 2022-11-12
      • 1970-01-01
      • 2017-11-27
      • 1970-01-01
      相关资源
      最近更新 更多