都是基础的问题,不过怎么查也没有查到想要的答案,还请各位大佬轻喷
假设我有一个 ts 对象接口,然后我初始化了一个 reactive
这里我并没有使用?(可选属性)因为我知道所有的属性都是必要的
interface TEST {
id: number
name: string
}
let test = reactive<TEST>() // 报错
我知道没有用可选属性就必须初始所有的属性,所以报错
但是假如这是一个拥有大量属性的对象,那我也必须初始所有属性?
比如一个 vue 文件有 2 个 reactive ,一个包括 20 个属性,全部初始化出来感觉很占地方
请问有没有什么小技巧之类的方法?
还是上面的接口,我初始化了 reactive
这里面我给了数字类型的 id 一个初始值 0
let test = reactive<TEST>({
id: 0,
name: '',
})
初始化数字类型,必须要填入数字
请问如果我想在 id 为 0 时(初始时或者其他不需要表示的时候)不显示
只有在逻辑中判断这一种方法嘛?有没有什么 ts 的声明技巧?
1
dcalsky 2022-03-28 11:37:03 +08:00 1
1: 无,必须手动写默认值
2: 最好手动判断 结论:当你想用奇技淫巧来搞一波小操作的时候,就是在给未来留坑。 |
2
gadfly3173 2022-03-28 11:44:51 +08:00 1
用了 ts 的话就是为了享受类型定义带来的便利,自然也需要承受类型定义带来的麻烦。用 ts 的时候不要想着用很多 js 里的奇淫技巧,把它当成一般的静态类型语言,比如 java c++之类的,用起来就没那么多问题了
|
3
yukYaoT 2022-03-28 14:03:53 +08:00 1
默认值可以使用 断言 指定
const test = reactive({}) as TEST |
4
TWorldIsNButThis 2022-03-28 14:07:17 +08:00 via iPhone
实际上 js 里没指定就是未定义行为
|