它可以創建一個DeepReadonly
類型是這樣的:DeepReadonly對象打字稿
type DeepReadonly<T> = {
readonly [P in keyof T]: DeepReadonly<T[P]>;
};
interface A {
B: { C: number; };
D: { E: number; }[];
}
const myDeepReadonlyObject: DeepReadonly<A> = {
B: { C: 1 },
D: [ { E: 2 } ],
}
myDeepReadonlyObject.B = { C: 2 }; // error :)
myDeepReadonlyObject.B.C = 2; // error :)
這是偉大的。 B
和B.C
都是隻讀的。當我嘗試修改D
但是......
// I'd like this to be an error
myDeepReadonlyObject.D[0] = { E: 3 }; // no error :(
我應該怎麼寫DeepReadonly
使嵌套數組是隻讀的呢?
我沒有收到'console.log(myDeepReadonlyObject.D [0])的錯誤;'您使用哪種版本的打字稿? –
我在我的tsconfig中設置了「noImplicitAny」標誌。但問題仍然存在。我已經更新它更清楚。謝謝。 –