2016-05-18 16 views
6

Bir JS kütüphanesi kullanıyorum, özellikle de select2 numaralarını kullandığım nesneler düz nesneler olmadığından hoşlandığımdan biraz farklı davranıyor. Bu, jQuery'nin isPlainObject işlevini kullanarak kontrol edilir.Bir TypeScript nesnesini düz bir nesneye nasıl dönüştürebilirim?

TypeScript'in bir dökümü var mı? Bunu kendi başıma yazmaya başvurmadan başaracağından habersiz miyim?

class Opt { 
    constructor(public id, public text) { 

    } 

    toPlainObj(): Object { 
     return { 
      id: this.id, 
      text: this.text 
     } 
    } 
} 

let opts = [ 
    new Opt(0, 'foo'), 
    new Opt(1, 'bar') 
]; 

console.clear() 

console.log('both should be false') 
$.map(opts, opt => { 
    console.log($.isPlainObject(opt)) 
}) 

console.log('both should be true') 
$.map(opts, opt => { 
    console.log($.isPlainObject(opt.toPlainObj())) 
}) 
+0

burada – messerbill

+0

kodunuzu gönderin: Bu takdirde

class Point { private x: number; private y: number; constructor(x: number, y: number) { this.x = x; this.y = y; } getX(): number { return this.x; } getY(): number { return this.y; } toPlainObj(): { x: number, y: number } { return Object.assign({}, this); } } 

o zaman bu yöntemi olan bir temel sınıfa sahip olabilir daha sınıflarında gereken bir şey @messerbill SO kod parçacıklarının TypeScript'i desteklediğine inanmıyorum. En azından, işe yaramayacağım. –

+0

sadece buraya yazın - kod snippet işlevini kullanmanız gerekmez – messerbill

cevap

8

Sen Object.assign() kullanabilirsiniz:

class Point { 
    private x: number; 
    private y: number; 

    constructor(x: number, y: number) { 
     this.x = x; 
     this.y = y; 
    } 

    getX(): number { 
     return this.x; 
    } 

    getY(): number { 
     return this.y; 
    } 
} 

let p1 = new Point(4, 5); 
let p2 = Object.assign({}, p1); 

p1 sınıf örneği olduğunu ve p2 sadece { x: 4, y: 5 } olduğunu.

Ve toPlainObj yöntemiyle

:

class BaseClass<T> { 
    toPlainObj(): T { 
     return Object.assign({}, this); 
    } 
} 

class Point extends BaseClass<{ x: number, y: number }> { 
    private x: number; 
    private y: number; 

    constructor(x: number, y: number) { 
     super(); 

     this.x = x; 
     this.y = y; 
    } 

    getX(): number { 
     return this.x; 
    } 

    getY(): number { 
     return this.y; 
    } 
} 
İlgili konular