TypeScript 介面 只讀屬性

admin發表於2019-02-25

如果屬性只能在其建立的時候修改值,那麼可以將其設定為只讀。

程式碼例項如下:

[typescript] 純文字檢視 複製程式碼
interface Itest {
  readonly webName: string;
  readonly age:number;
}

在前面新增readonly即可將對應的屬性設定為只讀。

[typescript] 純文字檢視 複製程式碼
interface Itest {
  readonly webName: string;
  readonly age:number;
}

let ant:Itest={
  webName:"螞蟻部落",
  age:5
}
ant.age=4;

上面程式碼會報錯,因為age是隻讀的。

TypeScript可以通過ReadonlyArray<T>設定陣列為只讀,那麼它的所有寫方法都會失效。

[typescript] 純文字檢視 複製程式碼
let ro: ReadonlyArray<number>=[1,2,3,5];
ro[1]=5;

上面的程式碼會報錯,因為陣列是隻讀的。

[typescript] 純文字檢視 複製程式碼
let ro: ReadonlyArray<number>=[1,2,3,5];
let arr:number[]=[];
arr=ro;

對只讀陣列賦值一個普通陣列也是錯誤的,不過可以對其重新型別斷言:

[typescript] 純文字檢視 複製程式碼
let ro: ReadonlyArray<number>=[1,2,3,5];
(<number[]>ro)[1]=5;

上述程式碼不會報錯,因為重新進行了型別斷言。

相關文章