Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
632 views
in Technique[技术] by (71.8m points)

TS如何处理class中无初始值属性的类型?

如下:
b是chart的一个实例对象,无法设置初始值,页无法在constructor中初始化。这样就会报错:

class Test {
  private a: string
  // 属性“b”没有初始化表达式,且未在构造函数中明确赋值。
  private b: ChartCfg 
  constructor(a: string) {
    this.a = a
  }
  createB() {
    this.b = new Chart({ 
        container: '#chart'
        // ...
    })
  }
  testB() {
    this.b.line()
  } 
}

如果给b一个初始值,类型就不匹配

// 不能将类型“null”分配给类型“Chart”。
private b: Chart = null

如果给b加个类型,调用它的时候类型就会报错??

private b: Chart | null = null
// 对象可能为 "null"。
this.b.line()

我可以用断言,但是每次使用b都需要断言,太麻烦了??

(<Chart>this.b).line()

大神们如果解决这类问题?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

非空断言就行了。

this.b!.line();

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...