繁体   English   中英

如何使用 keyof 属性定义通用打字稿类型?

[英]How to define generic typescript type with keyof property?

我想有一个泛型类型在某些函数中使用它作为参数,但不清楚如何定义一个具有强类型属性名称的属性(示例代码片段中的specificProperties )。

type Config<T> = {
    specificProperties: keyof T[],
    data: T[],
}

function doSomething<T>(config: Config<T>) {
    // Some logic here
}

用法:

type Test = {
    code: string,
    name: string,
}

const config: Config<Test> = {
    specificProperties: [ 'code' ], //Typescript error here
    data: [
        {
            code: 'a',
            name: 'b'
        }
    ]
}

doSomething(config)

Typescript 抛出错误:属性“specificProperties”的类型不兼容。 类型 'string[]' 不能分配给类型 'keyof T[]'。

似乎配置类型应该是固定的,但我不知道该怎么做。 有任何想法吗?

keyof T[]更改为(keyof T)[] 括号的优先级高于keyof运算符。

type Config<T> = {
    specificProperties: (keyof T)[],
    data: T[],
}

操场

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM