函数参数是TypeScript类型中存在的属性

模仿

我想编写一个函数,该函数返回类型上存在的单个属性:

type CustomType = {
    property1: boolean;
    property2: numeric;
};

private getData(obj): CustomType {
    // do stuff
    return dataObj;
}

private getBooleanValue(obj, key): boolean {
    const value = this.getData(obj)[key];
    // do stuff
    return value;
}

我想对getBooleanValue的键进行限制,该键是CustomType的一部分-例如:

getBooleanValue(obj, "property1") // OK
getBooleanValue(obj, "property2") // ERROR, TypeScript won't allow this
模仿

似乎这种工作有效,但似乎不是最佳解决方案:

type FilterFlags<Base, Condition> = {
    [Key in keyof Base]: Base[Key] extends Condition ? Key : never;
};

type AllowedNames<Base, Condition> = FilterFlags<Base, Condition>[keyof Base];


private getValue(
    obj, 
    key: keyof AllowedNames<CustomType, boolean>
): boolean {
    const value = this.getData(obj)[key];
    // do stuff
    return value;
}

编辑:我发现了一篇很棒的文章,关于过滤类型(条件类型)中的道具:https : //medium.com/dailyjs/typescript-create-a-condition-based-subset-types-9d902cea5b8c

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeScript中的类型不存在属性

在TypeScript条件类型中,如何测试函数/通用参数的存在?

如何从Typescript中的函数获取参数类型

TypeScript箭头函数中参数的类型

在TypeScript中按类型排除函数参数

函数的类型推断作为 Typescript 中的参数

在函数参数中声明对象属性类型

属性Python函数中的参数类型定义

函数参数中的动态Typescript对象属性

在 Typescript 中投射函数参数对象属性

在TypeScript中,如何在函数的返回类型中将参数的值用作属性名称?

函数参数类型不存在属性“id”

TypeScript 可选属性打破了函数参数的类型强制

在 TypeScript 中,当类型是函数的参数时,有没有办法限制 Partial<T> 类型的额外/多余属性?

Typescript - 获取嵌入在函数类型参数中的类型

类声明-TypeScript中的类型不存在属性

TypeScript中的EventTarget类型不存在属性“值”

Typescript中的类型“ Date”上不存在属性“ getWeek”

ReactJS 中的 Typescript 错误 - 类型上不存在属性

TypeScript中的“ EventTarget”类型错误不存在属性“文件”

Typescript中的XXX类型不存在属性'forEach'

函数中的泛型不检查Typescript中的参数类型

根据TypeScript中的参数在字典中定义函数的返回类型

参数类型中属性名称的奇怪 Typescript 语法

TypeScript报告通用函数中不存在的属性

基于可选参数存在的Typescript函数返回类型,而不使用函数重载

限制Node.js和TypeScript中的函数参数的类型

在TypeScript中获取函数参数名称和类型

使用Typescript中的函数参数隐式类型推断