6
のは、私が定義した型に付着入力があると仮定してみましょう:のタプル型のマップされた型をどのように生成できますか?
function acceptsPersonProperties(tuple: Array<PersonTuple>) { ... }
// this should be fine:
acceptsPersonProperties([['name', 'Bob'], ['age', 42]]);
// this should give a compile-time error:
acceptsPersonProperties([['name', 2], ['age', 'Bob']]);
:今
interface Person {
name: string;
age: number;
}
を、私は関数は、キーと値のペアの配列、例えばを受け入れるようにしたいですもちろん、私は、これを手動で入力することができます。例:
type PersonTuple = ['name', string] | ['age', number];
しかしタイプ(例えば、Person
)TEMPLがある場合どのようにタプルをmapped typeとして表現することができますか?
function acceptsPropertiesOfT<T>(tuple: Array<MappedTypeHere<T>>) { ... }
XY-問題を回避するために、実際のユースケースはこれです:
"/api/folder/1/files?fileid=23&fileid=47&fileid=69"
に解決されますが、私が入力したいので、それは余分な性質を許可していません
let request = api.get({
url: 'folder/1/files',
query: [
['fileid', 23],
['fileid', 47],
['fileid', 69]
]
});
(file_id
)、タイプをチェックします(文字列はfileid
)。
感謝を!私は "現実の"シナリオを含むように私の質問を更新しました。タプルでは(まだ)可能ではないことが悲しいです:/ APIは私のものではないので、TypeScriptのコンプライアンスのためにそれを変更するのは面倒なようです。 –
私はその質問を理解しているか分からない。あなたはこのようなものの後にいますか(マップされたタイプは必要ありません) - https://gist.github.com/bcherny/d70434e5bb53bb88dda29f900d385bbf – bcherny