![](/img/trans.png)
[英]How to use a JavaScript prompt box input value against a pre-defined object property name?
[英]How do i ensure that the value of a property is one of the value in an pre-defined object?
我正在使用與 typescript 反應,並希望確保 state 類型限制為 object 中的值,就像這樣
考慮
const [proessStatus, setProcessStatus] = useState<ProcessState>();
useState 必須僅接受來自 ProcessState Object 的值作為參數。
const ProcessState = {
NOT_STARTED: 'NOT_STARTED',
STARTED: 'STARTED',
LOADING: 'LOADING',
FINISHED: 'FINISHED'
}
有沒有辦法通過接口或任何其他方式在 typescript 中確保這一點。
是的,請使用基於字符串的枚舉!
enum ProcessState {
NOT_STARTED = 'NOT_STARTED',
STARTED = 'STARTED',
LOADING = 'LOADING',
FINISHED = 'FINISHED'
}
它們的值是類型安全的(因此驗證發生在編譯時)。 您可以在運行時將枚舉 object 本身用作普通的 object。 如果您需要額外的運行時驗證,您可以使用Object.values(ProcessState)
來獲取有效值。 您可以將它與Record<SomeEnum, SomeValueType>
類型一起使用來創建類型安全映射等。
使用 enum 並將其用作 function 的參數的類型
enum ProcessState {
NOT_STARTED = 'NOT_STARTED',
STARTED = 'STARTED',
LOADING = 'LOADING',
FINISHED = 'FINISHED'
}
function useState(p: ProcessState) {
...
}
useState(ProcessState.STARTED)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.