[英]Function to return picked types defined from the keys entered in array argument
所以我認為我對這個不走運,但我想在放棄這個想法之前我會在這里試一試。
我正在嘗試創建一個 function ,在其中給它一個泛型,然后將一個數組作為參數,並從泛型類型中選擇所需的鍵。 像這樣的東西。
type Test = {
a: boolean;
b: boolean;
c: boolean;
};
const t = use<Test>(["a", "b"]);
t.a = true;
t.b = true;
t.c = true; // `use` shall not let c be available. This should throw a typescript build error
如果有人有解決方案,通用 rest 參數也是可能的。
use<Test, "a" | "b">(["a", "b"]);
是迄今為止我發現的唯一有效的解決方案,但它真的很難看。
棘手的是,我看到的問題是 Typescript 似乎不允許您部分提供 generics,您要么必須顯式提供它們,要么隱含地全部提供它們。 最好有一些像 <string, ?> 這樣的語法。 這是我能做的最好的
function use<Q, S extends keyof Q>(
q: Q,
properties: S[]
): {
[K in S]: Q[K];
} {
return {} as any;
}
type Test = {
a: boolean;
b: boolean;
c: boolean;
};
const t = use(<Test>null, ["a", "b"]);
或者(我認為這更好)
function use<Q>(): <S extends keyof Q>(p: S[]) => { [K in S]: Q[K] } {
return {} as any;
}
type Test = {
a: boolean;
b: boolean;
c: boolean;
};
const t = use<Test>()(["a", "b"]);
希望有人可以向我們展示光明
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.