3 回答

TA貢獻1850條經驗 獲得超11個贊
這是一個TS Playground,說明了問題和四種可能的解決方案:
type FlexDirection = "column" | "inherit" | "-moz-initial" | "initial" | "revert" | "unset" | "column-reverse" | "row" | "row-reverse" | undefined;
type Styles = {
container: {
flexDirection: FlexDirection
}
}
function doStuff(a: Styles) { }
const stylesDoesNotWork = {
container: { flexDirection: 'column' }
};
const stylesWithCast = {
container: { flexDirection: 'column' as 'column' }
}
const stylesFieldConst = {
container: { flexDirection: 'column' } as const
};
const stylesConst = {
container: { flexDirection: 'column' }
} as const;
doStuff(stylesDoesNotWork);
doStuff(stylesWithCast);
doStuff(stylesFieldConst);
doStuff(stylesConst);
默認情況下,TypeScript 將為string
您聲明的對象推斷類型。您可能會在某處對其進行變異并更改值,在這種情況下,文字類型將不正確。因此,修復它的基本選項是:
手動注釋變量,以便 TypeScript 不會推斷字符串。
添加
as 'column'
cast 以告訴 TypeScript 使用文字類型。在字段或整個對象上使用
as const
來告訴 TypeScript 不允許更改字段,這允許 Typescript 推斷文字值。

TA貢獻1820條經驗 獲得超10個贊
嘗試這個
const styles: { container: React.CSSProperties} = {
container: { flexDirection: 'column' }
};

TA貢獻1921條經驗 獲得超9個贊
導入并使用類型:
import type { Property } from 'csstype'
使用 Property.FlexDirection 指定類型
添加回答
舉報