我有一些功能如下:
const myFunction = (columns: any, data: any) => {
let label: string;
let value: number;
//some section where it assigns label and value
for (let index = 0; index < columns.length; index ) {
const column: string = columns[index].fieldName;
const datapoint: string = data[index].formattedValue;
if (column.includes("KeyPointLabel")) {
label = datapoint;
}
if (column.includes("KeyPointValue")) {
value = Number(datapoint);
}
}
//if the above section worked as expected, they should have a value.
//so if it doesn't, throw an error.
if (typeof label === undefined) throw new Error() <--- ERROR HERE!!
return {label, value}
}
label我想對and進行空檢查value。我查看了其他幾個建議做if (typeof label === undefined)or等??的執行緒if (label == null),但是任何參考label或value給我“在分配前使用”錯誤的陳述句。
它分配的部分label只是value一個 for 回圈,它通過columns查看它是否有一個包含KeyPointLabel、 assignslabel = data[same index as column]和類似 for的列名value。columns和的形式data不是我能控制的。
從技術上講,我可以做到
let label: string = "";
let value: number = -1;
...
if(label === "" || value < 0) throw new Error();
return { label, value }
因為我value永遠不會期望有一個負數并且label永遠不會是一個空字串,但我想知道是否有更優雅的解決方案。
uj5u.com熱心網友回復:
您收到used before assigned錯誤的原因是因為 Typescript 不知道這undefined是一個可能的值/型別,label甚至是 other value。
如果您只是簡單地將型別指定為,您的第一個代碼塊實際上可以作業:
let label: string | undefined;
let value: number | undefined;
TS游樂場
uj5u.com熱心網友回復:
我只是將它宣告為可能是undefined,因為它是:
let label: string | undefined;
let value: number | undefined;
uj5u.com熱心網友回復:
您也可以使用“!” (明確的賦值斷言)。
例子:
let label!: string;
let value!: number;
示例:TS 游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/472029.html
標籤:打字稿
上一篇:vue - Vue中的ajax
