SORU
3 EKİM 2012, ÇARŞAMBA


TypeScript kurucu aşırı yükleme

Artık yapılacak yapıcı TypeScript aşırı yükleme vardır. Dil belirtimi sayfa 64 (v 0.8), açıklamaları yapıcı aşırı tarif var, ama herhangi bir örnek kod verilmedi.

Çok temel bir sınıf bildirimi şu an deniyorum; bu gibi görünüyor

interface IBox {    
    x : number;
    y : number;
    height : number;
    width : number;
}

class Box {
    public x: number;
    public y: number;
    public height: number;
    public width: number;

    constructor(obj: IBox) {    
        this.x = obj.x;
        this.y = obj.y;
        this.height = obj.height;
        this.width = obj.width;
    }   

    constructor() {
        this.x = 0;
        this.y = 0;
        this.width = 0;
        this.height = 0;
    }
}

Ne zaman TSK BoxSample ile koştu.ts, açık olan yapıcı bir yinelenen tanımı -- atar. Herhangi bir yardım için teşekkür ederiz. Şimdiden teşekkürler.

CEVAP
3 EKİM 2012, ÇARŞAMBA


TypeScript ama sadece bir uygulama var ve uygulama ile aşırı uyumlu bir imza olmalı aşırı bildirebilirsiniz. Sizin örnekte, bu kolay gibi isteğe bağlı bir parametre ile yapılabilir

interface IBox {    
    x : number;
    y : number;
    height : number;
    width : number;
}

class Box {
    public x: number;
    public y: number;
    public height: number;
    public width: number;

    constructor(obj?: IBox) {    
        this.x = obj && obj.x || 0
        this.y = obj && obj.y || 0
        this.height = obj && obj.height || 0
        this.width = obj && obj.width || 0;
    }   
}

ya da daha genel bir kurucu ile iki aşırı gibi

interface IBox {    
    x : number;
    y : number;
    height : number;
    width : number;
}

class Box {
    public x: number;
    public y: number;
    public height: number;
    public width: number;

    constructor();
    constructor(obj: IBox); 
    constructor(obj?: any) {    
        this.x = obj && obj.x || 0
        this.y = obj && obj.y || 0
        this.height = obj && obj.height || 0
        this.width = obj && obj.width || 0;
    }   
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • NCIX Tech Tips

    NCIX Tech Ti

    2 Ocak 2007
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013
  • SoundHound

    SoundHound

    8 Mart 2006