API10的严格语法strictPropertyInitialization的修改方法
通过实践,发现有两种修改方式均可编译通过,两种方法有什么推荐。
export class TestObj { 
  // API10下报错 
  res1: Resource; 
  // API10下报错 
  res?: Resource; 
}以上代码API10下编译报错:Property ‘res1’ has no initializer and is not definitely assigned in the constructor.
如下有两个改法,均可编译通过,请问两种改法的优劣和建议?
export class TestObj { 
  // 改法1 
  res1: Resource | null = null; 
  // 改法2 
  res2?: Resource; 
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 deveco studio中如何升级API10? 
4477浏览  • 1回复 已解决
API9和API10实现沉浸式窗口的方式 
417724浏览  • 1回复 待解决
API10有没有接口能获取到系统的运行内存? 
1723浏览  • 1回复 待解决
API11编译的har包可以在api10上使用吗 
3016浏览  • 1回复 待解决
HarmonyOS  api10如何给子窗口设置圆角 
1460浏览  • 1回复 待解决
HarmonyOS 如果API方法10+以后的怎么兼容,API为10之前的 
890浏览  • 1回复 待解决
看到Screenshot,但是api10没找到,想要截取屏幕中的某个column 
2512浏览  • 1回复 待解决
Json数据解析,原有是通过索引访问字段的方式obj[xxx-xxx.yy]的方式获取,ArkTS严格语法后,无法调用 
1239浏览  • 1回复 待解决
ListItem.editable 中的 EditMode.movable 在 api10 移除了有其他方案实现拖动排序吗? 
2385浏览  • 1回复 待解决
开发者使用HarmonyOS时,是否需要考虑接口兼容性,例如API10和API11 
3016浏览  • 1回复 待解决
鸿蒙OS API10 想给UI组件设置背景颜色,背景颜色渐变? 如何实现呢? 
4954浏览  • 1回复 待解决
对象取值在api10中不支持这样取值 listItem[item],只能json 转两次 
1606浏览  • 1回复 待解决
Arkts中是否有严格校验类型的json字符串转为指定model的方法 
1964浏览  • 1回复 待解决
HarmonyOS SDK如何升级API 10 
5896浏览  • 1回复 待解决
HarmonyOS 如何修改hilog阈值的方法 
806浏览  • 1回复 待解决
bean类系统自动生成的set方法报语法错误 
2605浏览  • 1回复 待解决
api 10或者11怎么打开wifi开关? 
1890浏览  • 0回复 待解决
HarmonyOS API 10 无法集成 AGC SDK,编译报错 
2345浏览  • 1回复 待解决
在如下语法中,这是ArkTS的语法还是TypeScript中的语法,在TypeScript中没找到具体说明 
1516浏览  • 1回复 待解决
开启了严格的ArkTS语言检查,JSON的取值方案 
3336浏览  • 1回复 待解决
HarmonyOS ArkTS语法的问题 
1452浏览  • 1回复 待解决
HarmonyOS 请问一下ArkTs是否有提供类似Java反射的语法或者API 
1885浏览  • 1回复 待解决
Deveco studio,API版本4.0.0(10),报错什么原因啊? 
4296浏览  • 1回复 待解决
iimsimsiHarmonyOS  获取和清理缓存的API方法 
1185浏览  • 1回复 待解决
HarmonyOS PixelMap对象调用getPixelByteNumber方法返回的值是原PixelMap对象的10倍左右 
949浏览  • 1回复 待解决





















推荐使用改法1,在使用时会有类型检查从TypeScript到ArkTS的适配规则 ,
强制进行严格类型检查规则:arkts-strict-typing
级别:错误
在编译阶段,会进行TypeScript严格模式的类型检查,包括:
noImplicitReturns,
strictFunctionTypes,
strictNullChecks,
strictPropertyInitialization。
TypeScript
在定义类时,如果无法在声明时或者构造函数中初始化某实例属性,那么可以使用确定赋值断言符!来消除strictPropertyInitialization的报错。使用确定赋值断言符会增加代码错误的风险,开发者需要保证该实例属性在被使用前已被赋值,否则可能会产生运行时异常。使用确定赋值断言符会增加运行时的类型检查,从而增加额外的运行时开销,所以应尽可能避免使用确定赋值断言符。使用确定赋值断言符将产生warning: arkts-no-definite-assignment。
相关约束:
使用具体的类型而非any或unknown不允许通过注释关闭类型检查。