我的程式簡化後差不多長這樣
type Tfoo = {
a: string,
b: string,
c: number,
d: boolean,
}
const apiFoo = (): Tfoo => {
return {
a: "AA",
b: "bb",
c: 123,
d: true,
}
}
const useFoo = () => {
const [data, setData] = useState<Tfoo | {}>({})
const update = async () => {
const res = await apiFoo()
setData(res)
}
return { data, setData, update }
}
const Bar = () => {
const { data, setData, update } = useFoo()
if(!data.a) return null
console.log(data.a)
}
在console.log(data.a) 會跳出錯誤
類型 '{} | Tfoo' 沒有屬性 'a'。
類型 '{}' 沒有屬性 'a'。ts(2339)
請問我應該怎麼處理這個錯誤?
我預期會出現undefined,也有對於undefined做處理
結果連 if(!data.a) 本身也跳這個錯誤
我希望避免以下面的方式處理
我希望避免a b c d以外的property出現
type Tfoo = {
[key: string]: string | number | boolean
a: string,
b: string,
c: number,
d: boolean,
}
求各位經驗分享,謝謝
我猜你想要的應該是這樣的Tfoo,表示這個資料不能有abcd以外的東西,但不一定四個屬性都要有
type Tfoo = {
a?: string,
b?: string,
c?: number,
d?: boolean,
}
然後在useState時,就不用|{}了
const [data, setData] = useState<Tfoo>({})