2016-01-13 31 views
5

Tôi muốn chuyển đối tượng làm đối số cho hàm tạo của lớp. Một số khóa của đối tượng tùy chọn là tùy chọn.Giá trị mặc định cho tham số tùy chọn trong đối số tùy chọn

Có cách nào tốt hơn/thành ngữ hơn để hoàn thành những điều sau đây trong bản đánh máy không? Cảm ơn

class Car { 
    color: number; 
    numberOfWheels: number; 

    constructor (options: {color: number, numberOfWheels?: number}) { 
     options.numberOfWheels |= 4; 

     this.color = options.color; 
     this.numberOfWheels = options.numberOfWheels; 
    } 
} 

Trả lời

4

Thay vào đó hãy sử dụng if (options.numberOfWheels === void 0) { options.numberOfWheels = 4; }. (Nếu không 0 hoặc NaN ... cũng sẽ là 4)

Bên cạnh đó những gì bạn làm thực sự khá thông minh và đó là điều tốt nhất bạn có thể làm. Những điều như vậy sẽ không làm việc:

constructor (options: {color: number, numberOfWheels?: number} = {color: options.color}) 
2

Bạn có thể sử dụng destructuring cho việc này:

class Car { 
    color: number; 
    numberOfWheels: number; 

    constructor ({color, numberOfWheels = 4}: {color: number, numberOfWheels?: number}) { 
     this.color = color; 
     this.numberOfWheels = numberOfWheels; 
    } 
} 

Ngoài ra ...

constructor (options: {color: number, numberOfWheels?: number}) { 
    let {color, numberOfWheels = 4} = options; 

    this.color = color; 
    this.numberOfWheels = numberOfWheels; 
} 
0

Tôi đang sử dụng nguyên cảo mới nhất và phiên bản stabled kể từ tháng 6 năm 2017 với VSCode.

Chúng tôi có thể đạt được thông số tùy chọn và giá trị mặc định bằng cách sử dụng đánh giá dưới đây.

export class Searcher { 
    createLog(message: string = "Default: No Message!") { 
    console.log(message); 
    } 
} 

Liên kết tham chiếu tốt để tìm hiểu về Optional and Default valued parameters in TypeScript.

Tôi hy vọng điều này sẽ hữu ích!

Các vấn đề liên quan