簡體   English   中英

function 的參數是存在於 Typescript 類型中的屬性

[英]Argument of function is a property that exists in a type of Typescript

我想編寫一個 function ,它返回一個類型上存在的單個屬性:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM