繁体   English   中英

TypeScript - 在 object 中强制执行特定键的类型

[英]TypeScript - enforce types of specific keys in object

我正在使用 typescript 并且现在定义一个看起来像这样的接口:

interface SelectProps<T> {
    options: T[];
    labelKey: keyof T;
    valueKey: keyof T;
}

T 可以是任何形式的 object,但它必须包含 label 和字符串的键,所以我想强制T[labelKey]T[valueKey]是字符串。 我怎样才能做到这一点?

type Option<LabelKey extends string, ValueKey extends string> = 
    Record<string, any> & Record<LabelKey | ValueKey, string>

interface SelectProps<LabelKey extends string, ValueKey extends string> {
    options: Option<LabelKey, ValueKey>[];
    labelKey: LabelKey;
    valueKey: ValueKey;
}

const props: SelectProps<'foo', 'bar'> = {
  options: [{ foo: '', bar: '', extra: 3 }],
  labelKey: 'foo',
  valueKey: 'bar'
}

我想说最简单的方法是定义一个基本接口,然后执行以下操作:

interface BaseSelectProps {
    valueKey: string;
    labelKey: string;
}

interface SelectProps<T extends BaseSelectProps> {
    options: T[];
}

暂无
暂无

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

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