Skip to content

Instantly share code, notes, and snippets.

@asduser
Created August 19, 2017 19:45
Show Gist options
  • Save asduser/aef6b6ffa57358fd9963f689eb5bfeb6 to your computer and use it in GitHub Desktop.
Save asduser/aef6b6ffa57358fd9963f689eb5bfeb6 to your computer and use it in GitHub Desktop.
constructor overload in TypeScript
class User {
public name: string;
public age: number;
public languages: string[];
constructor(name:string);
constructor(name:string, age?: number);
constructor(name:string, age: number, languages?: string[])
constructor(name?:string, age?: number, languages?: string[]) {
Object.assign(this, {name, age, languages});
}
}
let u1 = new User('bob');
let u2 = new User('thomas', 20);
let u3 = new User('jack', 25, ['en', 'jp']);
console.log(u1); // User { name: 'bob', age: undefined, languages: undefined }
console.log(u2); // User { name: 'thomas', age: 20, languages: undefined }
console.log(u3); // User { name: 'jack', age: 25, languages: [ 'en', 'jp' ] }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment