簡體   English   中英

TypeScript泛型的類型安全

[英]Type safety of TypeScript Generic

我不確定是否做錯了,還是設計使然...

在我班上

class List<T> { ... }

我有辦法

public Add(value: T): void { ... }

我創建列表的一個實例

const fooList: List<foo> = new List<foo>();

但現在我仍然可以

fooList.Add(new bar());

foo和bar是不相關的類型。 這不會觸發任何編譯器警告,對此我有點推遲。

我做錯了嗎,還是按預期進行?

我做錯了嗎,還是按預期進行?

如果類型兼容,則將被允許,例如

class List<T> {
  add(val: T) { }
}

class Animal { name: string; }
class Cat extends Animal { meow() { } }

const animals = new List<Animal>();
animals.add(new Animal()); // Okay 
animals.add(new Cat()); // Okay 

const cats = new List<Cat>();
cats.add(new Animal()); // Error 

更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM