私はTypeScriptを学んでおり、マップされた型を使用して、キーが実際にオブジェクトに存在する場合にのみユーザーがオブジェクトから値を抽出できるようにする関数を作成しようとしていました。これがコードです
const obj = {
a: 1,
b: 2,
c: 3
}
function getValues<T, K extends keyof T>(obj: T, keys: K[]) {
return keys.map(key => obj[key])
}
getValues(obj, ['a', 'b'])
だからここに私は2つのタイプのパラメータを定義したT
とK
、私は関数を呼び出したとき、私は明示的なタイプに合格しなかったため、彼らはTSコンパイラによって推測されています。
ここで私の質問は、型を関数に明示的に渡したい場合、関数をどのように書き直す必要があるかということです。ここで型推論がどのように機能するのか知りたいので、これを実行したいと思います。
だからこれは私の試みです
getValues<typeof obj, string[] extends keyof typeof obj>(obj, ['a'])
しかし、コンパイラは満足していません。解析エラーがありますParsing error: '?' expected
本当に型を明示的に渡したいと仮定するとextends
、関数の呼び出しでの使用は許可されていないと思います。
getValues<typeof obj, keyof typeof obj>(obj, ['a'])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加