代码之家  ›  专栏  ›  技术社区  ›  Aragorn

如何初始化typescript中的对象

  •  2
  • Aragorn  · 技术社区  · 6 年前

    我有一个简单的模型班

    export interface Category {
    
      name: string;
      description: string;
    
    }
    

    我需要声明并初始化一个角组件中的变量。 尝试:

    category: Category = {};
    

    错误:不能分配给类别

    category: Category = new Category();
    

    错误:类别引用了类型,但被引用为值。

    有什么建议吗?

    5 回复  |  直到 6 年前
        1
  •  3
  •   Ian MacDonald    6 年前

    您已经定义了 interface 不是 class . (你也错过了 var )

    export class Category {
      name: string;
      description: string;
    }
    var category: Category = new Category();
    

    或者,您可以离开 界面 完整的:

    export class Best implements Category {
    }
    var best: Category = new Best();
    
        2
  •  1
  •   Serdar    6 年前

    在typescript中,如果要使用对象初始值设定项,则需要定义类中的所有属性。

    let category: Category = {
        name: '',
        description: ''
    };
    

    通过这种方式,您的模型仍然可以保留为一个接口。

        3
  •  1
  •   Vitor M. Barbosa    6 年前

    如果你不想改变你的定义 interface class 你也可以这样做:

    let category = <Category>{ };
    

    否则,您可以按照其他答案更改 Category 成为一个班。

        4
  •  1
  •   Jake Holzinger    6 年前

    对象文本必须与接口匹配。因为您的接口有两个必需的属性( name description )它们都必须在对象实例化时声明。

    const category: Category = {
        name: 'foo',
        description: 'bar'
    };
    

    如果不能在前面构建整个对象,则可以使用内置的 Partial 键入以生成对象。

    const builder: Partial<Category> = {};
    builder.name = 'foo';
    builder.description = 'bar';
    
    const category: Category = builder as Category;
    
        5
  •  0
  •   nightingale2k1    6 年前
    interface Person{
        id: number; 
        name: string;
    }
    
    let x: Person = {
        id : 0,
        name :"JOHN"
    };
    
    alert(x.name);