typescriptの変数でオブジェクトプロパティを変更する

エマニュエル・マダラソウ

jsには、パラメータに従ってオブジェクトのリストに含まれるオブジェクトのプロパティを変更する関数があります。

function edit(object, key, property, value){
  object[key][property] = value;
}

TypeScriptで同じ機能を実行するにはどうすればよいですか?

今から私はこれを作りました:

function edit(object: ObjectList, key: string, property: string, value: number){
  object[key][property] = value;
}

しかし、それは機能せず、私に Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ name: string; mastery: number; parent_skill: number; access_level: number; cost: string; cost_value: number; background_color: number[]; font_color: number[]; description: string; required_skills: number[]; }'. No index signature with a parameter of type 'string' was found on type '{ name: string; mastery: number; parent_skill: number; access_level: number; cost: string; cost_value: number; background_color: number[]; font_color: number[]; description: string; required_skills: number[]; }'

次のような関数を呼び出せるようにしたい:

edit(myObject, "first", "oneProperty", "newValue1");

その結果、myObjectの「最初の」アイテムの「oneProperty」プロパティに「newValue1」が含まれることになります。

詳細:私のオブジェクトリスト

type SkillList = {
  [key: string]: Skill;
};

私のオブジェクト

type Skill = {
  name: string;
  mastery: number;
  parent_skill: number;
  access_level: number;
  cost: string;
  cost_value: number;
  background_color: number[];
  font_color: number[];
  description: string;
  required_skills: number[];
};
エリアス・シャブロウスキー

答えはジェネリック関数です:

コード

function edit<O extends ObjectList, K extends keyof O, P extends keyof O[K]>(object: O, key: K, property: P, value: O[K][P]){
  object[key][property] = value;
}

遊び場

説明

まず、O入力されたオブジェクト型を使用できるジェネリック型があります[key: string]: Skill;

次にKO/内のすべてのキーを参照するジェネリック型がありますobject

その後、のPすべてのプロパティを参照するジェネリック型がありますobject[key]

最後にO[K][P]、typescriptにタイプを使用するように指示するものがありobject[key][property]ます。これはおそらく最も便利な部分です。たとえば、stringsをnumbersでオーバーライドするのを防ぐからです。edit(mySkillObject, "first", "name", "newValue1");

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JSONオブジェクトでオブジェクトのプロパティ値を変更する方法

分類Dev

外部変数の変更時にオブジェクトのプロパティを更新する方法

分類Dev

変数に基づいてオブジェクトのプロパティを変更する

分類Dev

TypeScriptで内部オブジェクトプロパティを配列に変更する

分類Dev

オブジェクトのプロパティを動的に変更する

分類Dev

PHP:オブジェクトプロパティの順序を変更する

分類Dev

オブジェクトのプロパティを変更する

分類Dev

jquery オブジェクトの 'name' プロパティを変更する

分類Dev

オブジェクトの配列のオブジェクトプロパティを変更する

分類Dev

オブジェクトのオブジェクト属性を変更するためのプロパティ

分類Dev

PythonでプログラムでAutoCADオブジェクトのプロパティを変更する方法

分類Dev

PHPのオブジェクトプロパティで変数変数を使用する

分類Dev

同じオブジェクトの複数のプロパティを変更する

分類Dev

ES6でオブジェクトプロパティの名前を変更する最良の方法

分類Dev

QMLで他のオブジェクトのプロパティを変更する方法

分類Dev

jqを使用してオブジェクトのプロパティを条件付きで変更する

分類Dev

変数参照を使用してJavascriptでネストされたオブジェクトの内部プロパティを変更する方法

分類Dev

Javascriptでオブジェクトの構造とプロパティを変更する

分類Dev

Javascriptでオブジェクトの構造とプロパティを変更する

分類Dev

オブジェクトのプロパティES6を条件付きで変更する

分類Dev

オブジェクトのプロパティを条件付きで変更する

分類Dev

Angularでオブジェクトプロパティの変更を処理する方法は?

分類Dev

不変のプロパティを持つKotlinのオブジェクトの状態を変更する

分類Dev

stdClassオブジェクトのプロパティ名を変更します

分類Dev

パワーポイントオブジェクトのプロパティを変更する

分類Dev

ゲッターでオブジェクトプロパティを変更することを禁止する方法

分類Dev

配列オブジェクトのプロパティを変更する方法をフックします。

分類Dev

関数内の変数を介してオブジェクトのプロパティ/値を変更する際の問題

分類Dev

LINQを使用してリスト内のオブジェクトのプロパティを変更する

Related 関連記事

  1. 1

    JSONオブジェクトでオブジェクトのプロパティ値を変更する方法

  2. 2

    外部変数の変更時にオブジェクトのプロパティを更新する方法

  3. 3

    変数に基づいてオブジェクトのプロパティを変更する

  4. 4

    TypeScriptで内部オブジェクトプロパティを配列に変更する

  5. 5

    オブジェクトのプロパティを動的に変更する

  6. 6

    PHP:オブジェクトプロパティの順序を変更する

  7. 7

    オブジェクトのプロパティを変更する

  8. 8

    jquery オブジェクトの 'name' プロパティを変更する

  9. 9

    オブジェクトの配列のオブジェクトプロパティを変更する

  10. 10

    オブジェクトのオブジェクト属性を変更するためのプロパティ

  11. 11

    PythonでプログラムでAutoCADオブジェクトのプロパティを変更する方法

  12. 12

    PHPのオブジェクトプロパティで変数変数を使用する

  13. 13

    同じオブジェクトの複数のプロパティを変更する

  14. 14

    ES6でオブジェクトプロパティの名前を変更する最良の方法

  15. 15

    QMLで他のオブジェクトのプロパティを変更する方法

  16. 16

    jqを使用してオブジェクトのプロパティを条件付きで変更する

  17. 17

    変数参照を使用してJavascriptでネストされたオブジェクトの内部プロパティを変更する方法

  18. 18

    Javascriptでオブジェクトの構造とプロパティを変更する

  19. 19

    Javascriptでオブジェクトの構造とプロパティを変更する

  20. 20

    オブジェクトのプロパティES6を条件付きで変更する

  21. 21

    オブジェクトのプロパティを条件付きで変更する

  22. 22

    Angularでオブジェクトプロパティの変更を処理する方法は?

  23. 23

    不変のプロパティを持つKotlinのオブジェクトの状態を変更する

  24. 24

    stdClassオブジェクトのプロパティ名を変更します

  25. 25

    パワーポイントオブジェクトのプロパティを変更する

  26. 26

    ゲッターでオブジェクトプロパティを変更することを禁止する方法

  27. 27

    配列オブジェクトのプロパティを変更する方法をフックします。

  28. 28

    関数内の変数を介してオブジェクトのプロパティ/値を変更する際の問題

  29. 29

    LINQを使用してリスト内のオブジェクトのプロパティを変更する

ホットタグ

アーカイブ