今天写dart的时候发现一个问题: 类似于:
List? AA;
List BB = [1, 2, 3];
if (true) {
AA = [];
AA.add(1);
BB.forEach((element) {
AA!.add(element);
});
}
这样的代码,我的第二个AA.add就需要使用!进行非空断言。这是为什么呢。
最开始我以为是dart类型校验的问题。后来在ts上也尝试的同样的写法,仍然存在这个问题。
let AA: number[] | undefined;
let BB = [1, 2, 3]
if (1) {
AA = []
AA.push(1)
BB.forEach(e => {
AA!.push(123)
})
}
这是由于编译器本身实现原理导致的吗?