かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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);

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