読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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

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

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