簡體   English   中英

TypeScript 不使用 Pick 強制執行返回類型

[英]TypeScript not enforcing return type using Pick

這是 Pick 的預期行為嗎? 因為我認為 TypeScript 在返回不同的對象類型時會提示錯誤。

預期的返回類型是{ title: string }但類型是{ title: string; completed: boolean } { title: string; completed: boolean }被返回。

操場

interface Todo {
  title: string
  description: string
  completed: boolean
}

// Pick "title" and "completed" from Todo
type TodoPreview = Pick<Todo, "title" | "completed">

// Creating a TodoPreview object
const todo: TodoPreview = {
  title: "Clean room",
  completed: false,
}
  
const mytodo = (): Pick<Todo, "title"> => {
    return todo // No error returning a TodoPreview
}

您正在做的事情與此基本相同:

interface Animal {
   color?: string;
}

interface Bird extends Animal {
   canFly: boolean
}

function getAnimalColor(animal: Animal): Animal | undefined {
   return animal.color ? animal : undefined;
}

const duck: Bird = {
   color: 'brown',
   canFly: true
}

const animalColor = getAnimalColor(duck);

console.log(animalColor)

由於duckBird一個實例,同時也是Animal一個實例,所以這是可以接受的。 以這種方式使用Pick是實現多態的另一種方式。

也許這個建議就是你要找的。 看起來很多人都想要同樣的東西。

暫無
暫無

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

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