个人在定义组件的一个属性时,遇到的问题
@Component
struct StateItem {
Icon: Resource;
name:string=''
@BuilderParam content: () => void
build() {
}
}
在鸿蒙arkts语言中,该句意思为代码中,有一个名为Icon的属性在类的构造函数中没有被明确初始化这是TypeScript(arkts被鸿蒙称为是ts的超类)的严格空检查(strictNullChecks)特性的一部分,它要求所有可能为null或undefined的变量在使用前都必须被明确赋值。
通过了解,目前知道这类问题有几种解决方式:
1. 直接初始化Icon
最直接的方法是在定义的时候给Icon属性赋值,但是这里不好定义,因为是Resource类型,如果是string,number等倒是更好定义
2. 使用可选属性
如果Icon在某些情况下可能不被使用,你可以将其声明为可选属性。
@Component
struct StateItem {
Icon?: Resource;
name:string=''
@BuilderParam content: () => void
build() {
}
}
3. 使用非空断言操作符!
如果你确定在类的其他部分(如方法调用之前)Icon会被赋值,但TypeScript的静态分析器无法推断出来,你可以在属性名后使用!来告诉TypeScript编译器这个属性在使用前一定会被赋值:
@Component
struct StateItem {
//非空断言操作符,属性名后使用!来告诉TypeScript编译器这个属性在使用前一定会被赋值
Icon!: Resource;
name:string=''
@BuilderParam content: () => void
build() {
}
}
4. 延迟初始化
这里不了解,不做评论,有需要可自行搜索
个人在定义组件的一个属性时,遇到的问题
@Component
struct StateItem {
Icon: Resource;
name:string=''
@BuilderParam content: () => void
build() {
}
}
在鸿蒙arkts语言中,该句意思为代码中,有一个名为Icon的属性在类的构造函数中没有被明确初始化这是TypeScript(arkts被鸿蒙称为是ts的超类)的严格空检查(strictNullChecks)特性的一部分,它要求所有可能为null或undefined的变量在使用前都必须被明确赋值。
通过了解,目前知道这类问题有几种解决方式:
1. 直接初始化Icon
最直接的方法是在定义的时候给Icon属性赋值,但是这里不好定义,因为是Resource类型,如果是string,number等倒是更好定义
2. 使用可选属性
如果Icon在某些情况下可能不被使用,你可以将其声明为可选属性。
@Component
struct StateItem {
Icon?: Resource;
name:string=''
@BuilderParam content: () => void
build() {
}
}
3. 使用非空断言操作符!
如果你确定在类的其他部分(如方法调用之前)Icon会被赋值,但TypeScript的静态分析器无法推断出来,你可以在属性名后使用!来告诉TypeScript编译器这个属性在使用前一定会被赋值:
@Component
struct StateItem {
//非空断言操作符,属性名后使用!来告诉TypeScript编译器这个属性在使用前一定会被赋值
Icon!: Resource;
name:string=''
@BuilderParam content: () => void
build() {
}
}
4. 延迟初始化
这里不了解,不做评论,有需要可自行搜索