JavaScriptでオブジェクトからプロパティを削除する方法

技術メモ

プロパティの削除

delete演算子を使用する。

delete object.property
delete object['property']

使用例:

const Pesron = {
  firstName: 'Taro',
  lastName: 'Yamada'
};

console.log(Person.firstName);
// expected output: "Taro"

delete Person.firstName;

console.log(Person.firstName);
// expected output: undefined

ただTypeScriptの場合、delete演算子を使うと怒られる。

const Pesron = {
  firstName: 'Taro',
  lastName: 'Yamada'
};

delete Person.firstName;

//以下のエラーメッセージが出る。
//The operand of a 'delete' operator must be optional

「deleteする対象はoptionalじゃなきゃダメよー」とのこと。つまり、今の状態ではPersonオブジェクトのfirstNameプロパティは必須であり、消すことができない。

そのため、firstNameプロパティはあってもなくてもいいよと明記する必要がある。プロパティ名の末尾に?(クエスチョンマーク)を追加することでそのプロパティは必須ではなくなる。

const Person: {
    firstName?: string,
    lastName: string
} = {
    firstName:'Taro',
    lastName:'Yamada'
};

delete Person.firstName;

TypeScriptに慣れない間は、明示的に型を記載した方がよいかも。。。

まとめ

演算子といえば、+(プラス)とかー(マイナス)のイメージが強かったため、delete演算子なんてものがあるのかと驚きました。そう考えたら、typeofとかも演算子の一種になるのは納得です。

コメント

タイトルとURLをコピーしました