[解決済み] タイプスクリプトのレコードタイプとは何ですか?
質問
とは何ですか?
Record<K, T>
はTypescriptでどういう意味ですか?
Typescript 2.1 では
Record
という型があり、例で説明されています。
// For every properties K of type T, transform it to U function mapObject<K extends string, T, U>(obj: Record<K, T>, f: (x: T) => U): Record<K, U>
見る タイプスクリプト2.1
そして、その
高度なタイプ
のページで言及しています。
Record
と並んで、マップされたタイプの見出しの下にある
Readonly
,
Partial
および
Pick
その定義と思われるものには
<ブロッククオートtype Record<K extends string, T> = { [P in K]: T; }
Readonly、Partial、Pickは同型ですが、Recordはそうではありません。Recordが同型でない一つの手がかりは、プロパティをコピーするための入力型を取らないということです。
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
そして、これで終わりです。上記の引用文の他には
Record
について
typescriptlang.org
.
質問内容
-
の簡単な定義を教えてください。
Record
は? -
は
Record<K,T>
は、単に「このオブジェクトのすべてのプロパティは、タイプT
とは?おそらく、そうではないでしょう すべて プロパティを使用します。K
は、何か目的があるのでしょうか...。 -
を使用していますか?
K
ジェネリックは、オブジェクトの追加キーとしてK
に変換されないことを示すだけなのか、それとも許容するのか。T
? -
与えられた例で
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
これと全く同じですか。
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}
解決方法は?
<ブロッククオート-
の簡単な定義を教えてください。
Record
は?
A
Record<K, T>
はオブジェクトタイプで、プロパティキーは
K
で、そのプロパティ値は
T
. つまり
keyof Record<K, T>
は、以下のものと同等です。
K
であり、かつ
Record<K, T>[K]
とは(基本的に)同等です。
T
.
- は
Record<K,T>
は、単に「このオブジェクトのすべてのプロパティは、タイプT
とは?おそらくすべてのオブジェクトではありません。K
は、何らかの目的があるのでは...。
ご指摘の通りです。
K
は、プロパティ・キーを特定の値に限定する目的があります。 もし、すべての文字列値のキーを受け入れたいのであれば、次のようにすることができる。
Record<string, T>
しかし、それを行う慣用的な方法としては
インデックス署名
のように
{ [k: string]: T }
.
- を実行しますか?
K
ジェネリックは、オブジェクトの追加キーがK
に変換されないことを示すだけなのか、それとも許容するのか。T
?
結局のところ、値はそのタイプで明示的に言及されていないプロパティを持つことが一般的に認められています...しかし、そのようなプロパティが存在することは認識できないでしょう。
declare const x: Record<"a", string>;
x.b; // error, Property 'b' does not exist on type 'Record<"a", string>'
として扱われます。 超過プロパティ が拒否されることがあります。
declare function acceptR(x: Record<"a", string>): void;
acceptR({a: "hey", b: "you"}); // error, Object literal may only specify known properties
と受け止められることもあります。
const y = {a: "hey", b: "you"};
acceptR(y); // okay
<ブロッククオート
-
与えられた例で
type ThreeStringProps = Record<'prop1' | 'prop2' | 'prop3', string>
これと全く同じですか。
type ThreeStringProps = {prop1: string, prop2: string, prop3: string}
やったー!!!(笑
お役に立てれば幸いです。 幸運を祈ります。
関連
-
[解決済み】Typescript : require文はimport文の一部ではない
-
[解決済み】Typescriptで、! (エクスクラメーションマーク/バン)演算子でメンバを再参照するのは?
-
[解決済み] 型{ [key: string]: boolean; }は何を意味するのでしょうか?
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] Typescript オブジェクトのインデックス付きメンバの型を強制する?
-
[解決済み] TypeScriptのオブジェクトリテラルでの型定義
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み】オブジェクトの配列を定義するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】tsconfigファイルにおけるesModuleInteropの理解
-
[解決済み] Webpack with typescriptでTypeScript emitted no outputエラーが発生する。
-
[解決済み] TypeScriptの非同期関数でプロミスを返す
-
[解決済み] TypeScriptで文字列をenumに変換するには?
-
[解決済み] Typescript は ?演算子をサポートしていますか?(そして、それは何と呼ばれているのでしょうか?)
-
[解決済み] String型とstring型の違いは何ですか?
-
[解決済み】TypeScriptで型をnullableとして宣言する方法は?
-
[解決済み】WebStorm/PhpStormのダブルクォートでTypeScriptの自動インポートを行う。
-
[解決済み】タイプライター。TS7006: パラメータ 'xxx' は暗黙のうちに 'any' 型を持つ。
-
[解決済み】ブロックに`@ts-ignore`を使用するには?