2016-02-11 90 views
1

是否可以使用不同的特定實現內聯初始化接口類型爲IFooFace的數組?或者是不可能的,我必須在數組之前初始化我的對象,然後將它們傳入?在接口類型數組中內聯初始化不同類型的對象

這是我能做到這一點在C#:

public interface IFooFace 
{ 
    int Id { get; } 
} 

public class Bar : IFooFace 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

public class Zar : IFooFace 
{ 
    public int Id { get; set; } 
    public string MegaName { get; set; } 
} 

internal class Program 
{ 
    public static IFooFace[] Data = 
    { 
     new Bar 
     { 
      Id = 0, 
      Name = "first" 
     }, 
     new Zar 
     { 
      Id = 1, 
      MegaName = "meeeega" 
     } 
    }; 
} 

這是我在打字稿嘗試:

export interface IFooFace { 
    id: number; 
} 

export class Bar implements IFooFace { 
    public id: number; 
    public name: string; 
    // a lot of more properties 
} 

export class Zar implements IFooFace { 
    public id: number; 
    public megaName: string; 
    // a lot of more properties 
} 

var Data : IFooFace[] = [ 
    // how to initialize my objects here? like in C#? 

    // this won't work: 

    // new Bar(){ 
    //  id: 0, 
    //  name: "first" 
    // }, 
    // new Zar() { 
    //  id: 1, 
    //  megaName: "meeeeega" 
    // } 



    // this also doesn't work: 
    // { 
    //  id: 0, 
    //  name: "first" 
    // }, 
    // { 
    //  id: 1, 
    //  megaName: "meeeeega" 
    // }  
]; 

回答

1

沒有,打字稿does not have object initializers。 @RyanCavanaugh顯示possible solution在TS:

class MyClass { 
    constructor(initializers: ...) { ... } 
} 

var x = new MyClass({field1: 'asd', 'field2: 'fgh' }); 
+0

哇...我甚至沒有意識到,沒有任何對象初始化在所有 - 我一直以爲它工作時,你只是做'VAR BLA:富{。 ..''但是如果你用'instance of'查看它甚至不是'Foo'的實例,而不是'object' ......我必須說我有點失望......無論如何。 –