2017-09-08 23 views
1

定义平板类像这样工作得很好:如何定义类变量不平整,使用默认值

class Test { 
 
company_name: string = ""; 
 
company_id: number = 0; 
 
company_website: string = ""; 
 
}

如果我做let product = new Test()这一切按预期工作,和product也加载了默认值。

我该如何实现同样的事情,但是对于不平坦的类变量呢?理想的情况下它应该工作像在这个例子中(其中失败):

class Test { 
 
    companyData: { 
 
    company_name: string = ""; 
 
    company_id: number = 0; 
 
    company_website: string = ""; 
 
    } 
 
    productData: { 
 
    category_id: number = 0; 
 
    product_name: string = ""; 
 
    price: { 
 
     price_in: number = 0; 
 
     price_out: number = 0; 
 
    } 
 
    } 
 
}

的错误VSCode为A type literal property cannot have an initializer。在我的用例中,重要的是设置所有变量,并且可以将它们分配为默认值。

回答

2

您正在定义Types,而不是设置propertiesvalues(或介于两者之间,语法无论如何都是错误的)。如果你也想拥有它们Typed(你应该),使用的界面

class Test { 
    public companyData = { 
    company_name: '', 
    company_id: 0, 
    company_website: '' 
    }; 
    public productData = { 
    category_id: 0, 
    product_name: '', 
    price: { 
     price_in: 0, 
     price_out: 0 
    } 
    }; 
} 

interface CompanyData { 
    company_name: string; 
    company_id: number; 
    company_website: string; 
} 

interface ProductData { 
    category_id: number; 
    product_name: string; 
    price: Price; 
} 

interface Price { 
    price_in: number; 
    price_out: number; 
} 

class Test { 
    public companyData: CompanyData = { 
    company_name: '', 
    company_id: 0, 
    company_website: '' 
    }; 
    public productData: ProductData = { 
    category_id: 0, 
    product_name: '', 
    price: { 
     price_in: 0, 
     price_out: 0 
    } 
    }; 
} 

试试这个

相关问题