TypeScript类构造函数能否将options对象参数直接声明为类成员?
结论
你提到的直接在解构的options参数前加访问修饰符的写法当前TypeScript版本不支持,参数属性语法仅能作用于构造函数的顶层参数,无法嵌套在解构逻辑中使用。
你不需要完全手动逐个赋值,有两种更简洁的实现方案:
方案1:使用Object.assign简化赋值
你只需要提前声明类成员的类型,赋值步骤可以批量完成:
class Test4 { private arg1: string private arg2: number constructor(options: {arg1: string, arg2: number}) { Object.assign(this, options) } }
方案2:直接将整个options作为类成员存储
如果你的业务场景允许,直接把整个options对象声明为参数属性,省去单个成员的定义:
interface TestOptions { arg1: string arg2: number } class Test5 { constructor(private options: TestOptions) {} // 后续使用时访问 this.options.arg1 即可 }
目前TypeScript官方没有支持解构参数加修饰符的相关计划,主要是因为解构场景过于灵活(嵌套解构、默认值、剩余参数等),很难设计出覆盖所有边界的语法规则,所以暂时只能用上述替代方案实现需求。
内容的提问来源于stack exchange,提问作者Akumachan
相关产品推荐
相关产品推荐

