Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对Typescript中的Object.assign使用stringPropertyInitialization_Typescript_Tsconfig - Fatal编程技术网

如何对Typescript中的Object.assign使用stringPropertyInitialization

如何对Typescript中的Object.assign使用stringPropertyInitialization,typescript,tsconfig,Typescript,Tsconfig,我有一门课 export class Config{ public doSomething: boolean; public doSomethingOptionally?: boolean constructor(data: { doSomething: boolean, doSomethingOptionally?: boolean }) { Object.assign(this, data); } }

我有一门课

export class Config{

    public doSomething: boolean;
    public doSomethingOptionally?: boolean

    constructor(data: {
        doSomething: boolean,
        doSomethingOptionally?: boolean
    }) {
        Object.assign(this, data);
    }
}
以这种方式将数据传递给构造函数非常简单,IntelliSense非常智能,不允许开发人员在不指定
doSomething
属性的情况下创建
Config
类的新实例,但它可以不指定
doSomething

所有这些都非常有效,但只要我在
tsconfig.json
中启用
strictPropertyInitialization
,我就会收到一堆错误,因为
doSomething
没有初始化

这方面最好的解决方法是什么

我不想:

  • 指定默认值(对象可能非常大)
  • 使用
    doSomething:boolean={}as any
  • 数据
    属性之外的构造函数中赋值,因为可能有很多参数,调用构造函数对我来说太难看了
  • 使
    doSomething
    接受未定义的值

  • 一种解决方案是让编译器知道哪些属性是通过
    对象初始化的

    export class Config{
    
        public doSomething!: boolean;
        public doSomethingOptionally?: boolean
    
        constructor(data: {
            doSomething: boolean,
            doSomethingOptionally?: boolean
        }) {
            Object.assign(this, data);
        }
    }