かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

TypeScriptで名前付き引数がとりたい人生だった

単純なオブジェクトを作るときに、こんなのやりたかったんです。

class Person {
    constructor(
        public name: string = '',
        public age: number) { }
}

var obj = new Person(name: 'hoge');
console.log(obj.name);

でも、名前付き引数はTypeScriptでサポートされてないみたいですね。名前付き引数がほしい時はこんな感じにするみたいです。

class Person {
    name: string;
    age: number;
    constructor(params: { name?: string, age?: number }) {
        this.name = params.name || '';
        this.age = params.age || 0;
    }
}

var obj = new Person({ name: 'okazuki' });
console.log(obj.name);
console.log(obj.age);

ちょっとめんどいですねぇ。コンストラクタで引数と一緒にプロパティを定義しつつ名前付き引数で初期値を決めて変えたいところだけ差し替えるみたいな使い方がしたいと思うなどした。