簡體   English   中英

Function 返回從數組參數中輸入的鍵定義的選擇類型

[英]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.

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