在以下代碼塊中,使用<>-Notation定義了屬性 pens 的型別:
return {
...defaultValues,
pens:
<[{penStrokeColor: string, penStrokeWidth: number, penOpacity: number}]>
[...Array(5).keys() ].map((_)=> {
return {
penStrokeColor: defaultValues.currentItemStrokeColor,
penStrokeWidth: defaultValues.currentItemStrokeWidth,
penOpacity: defaultValues.currentItemOpacity
}})
}
上面的代碼有效,但我的 linter 抱怨這個型別提示應該以不同的方式宣告:
Use 'as [{ penStrokeColor: string; penStrokeWidth: number; penOpacity: number }]' instead of '<[{ penStrokeColor: string; penStrokeWidth: number; penOpacity: number }]>' @typescript-eslint/consistent-type-assertions
這也可以行內完成,如果可以,如何完成?
uj5u.com熱心網友回復:
正如錯誤所說 - 使用as而不是尖括號符號來斷言型別。
return {
...defaultValues,
pens:
[...Array(5).keys() ].map((_)=> {
return {
penStrokeColor: defaultValues.currentItemStrokeColor,
penStrokeWidth: defaultValues.currentItemStrokeWidth,
penOpacity: defaultValues.currentItemOpacity
}}) as [{penStrokeColor: string, penStrokeWidth: number, penOpacity: number}]
}
但我不認為這就是你想要的——你真的想告訴 TS 創建的陣列是一個tuple,只有一個專案嗎?由于您要創建 5 個元素,因此您可能需要一個陣列型別。
如果是這種情況,也根本不需要型別斷言 - TS 可以正確推斷創建的陣列是所需的型別。
return {
...defaultValues,
pens: [...Array(5).keys() ].map((_)=> {
return {
penStrokeColor: defaultValues.currentItemStrokeColor,
penStrokeWidth: defaultValues.currentItemStrokeWidth,
penOpacity: defaultValues.currentItemOpacity
};
})
};
它在沒有任何 TypeScript 語法的情況下推斷出正確的型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/394845.html
標籤:javascript 打字稿 eslint
上一篇:在github操作中安裝清漆
下一篇:具體真值表的宣告
