1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【JavaScript】【TypeScript】オブジェクトのプロパティ(キー)は文字列

Posted at

はじめに

  • 基本的なことなのですが混乱したためメモ
    • obj.prop のようなドット記法で参照」 = 「Ruby でいう"シンボル"?」なのかという点で勝手に混乱したため

結論

  • オブジェクトのプロパティ (キー) は文字列である
    • Object.keys(XXX)で確認すると文字列として格納されているのが確認できる
    • ブラケット記法においても ["XXX"] で参照できる
sample.ts
const data = 'prop';
const obj: {
  name: string;
  age: number;
  123: 123;
  [data]: string;
} = {
  name: 'Mike',
  age: 20,
  123: 123,
  [data]: 'hello'
}


// キーの確認
console.log(Object.keys(obj));           //=> [ '123', 'name', 'age', 'prop' ]
console.log(typeof Object.keys(obj)[0]); //=> string
console.log(typeof Object.keys(obj)[1]); //=> string
console.log(typeof Object.keys(obj)[2]); //=> string
console.log(typeof Object.keys(obj)[3]); //=> string

// ドット記法
console.log(obj.name); //=> Mike
console.log(obj.age);  //=> 20
console.log(obj.prop); //=> hello

// ブラケット記法
console.log(obj["name"]); //=> Mike
console.log(obj["age"]);  //=> 20
console.log(obj[123]);    //=> 123
console.log(obj["123"]);  //=> 123
console.log(obj[prop]);   //=> hello

// エラー
console.log(obj[name]); // error TS2538: Type 'void' cannot be used as an index type.
console.log(obj.123);   // error TS1005: ',' expected.
  • プロパティ(キー)に数値を用いるケースを見つけられなかったので一般的ではないかと思われます
    • 先述のコードよりドット記法だとエラーになるため使い勝手が悪い
const obj = {
  123: 1_234_567_890
}

console.log(obj["123"]);  //=> 1234567890
// console.log(obj.123);  // エラー

変わったプロパティの設定方法(動的プロパティ名)

  • プロパティについて調査している際に 動的プロパティ名 という概念をしったため併せてメモ
    • これについて先述の『プロパティは文字列である』という点が関係してくる
sample.ts
const key1 = 'name';
const key2 = 'age';
const person = {
  [key1]: 'Alice',
  [key2]: 30,
};

// 動的にプロパティ名を指定して値を取得
console.log(person[key1]); //=> 'Alice'
console.log(person[key2]); //=> 30

// 新しいプロパティを追加
const additionalKey = 'location';
person[additionalKey] = 'Tokyo';

console.log(person); //=> { name: 'Alice', age: 30, location: 'Tokyo' }
1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?