有些时候我们会遇到,一个新的变量,我们知道它是什么类型,类型已经用interface写好了。但是,此时我们还未打算初始化它,仅仅是想申明一个局部(全局)变量,方便后面调用。
在".ts"文件(或者vue的<script setup lang="ts">
)中,我们可以像下面这样申明:
let a:number;
这样便是申明了一个变量,但是还未初始化。
但是在pinia中,这样行不通,因为人家就是用冒号赋值,就没法用冒号初始化了:
state: () => {
return {
a: 0,
};
},
这样初始化就可以,但是有时候是个对象,我们的类型是个interface:
interface iA {
b: number;
}
现在我要将申明一个a:
state: () => {
return {
a: {
b: 0,
},
};
},
这样是能标注a的类型,但是很不方便,当属性多的时候,多麻烦呀,而且默认值也不知道该怎么赋值,就想用undefined。但是number类型赋值undefined是要报错的。
于是找到了下面的方法:
state: () => {
return {
a: {} as iA,
};
},
这样就初始化了一个空的结构体,类型又标注好了。
数组的申明又有点不一样,应该像下面这样:
state: () => {
return {
a: new Array<iA>(),
};
},
其实这些是基本知识,但是没有系统学过js和ts,基础太差。