簡體   English   中英

如何在 Typescript 中進行動態簽名和返回類型?

[英]How to do dynamic signature and return type in Typescript?

我想根據是否存在參數創建一個類似於 getter 和 setter 的函數。 邏輯已經在函數里了,但是TS搞不清楚類型就報錯了。

// if no argument, is a getter, and return `Coord` type
cursor(): Coord

// if present, is a setter, return `this` type
cursor(p: Coord): this
cursor(p){
  if (arguments.length === 0) return this._cursor
  this._cursor = p
  return this
}

你很親近。 具有實現的方法的參數類型必須與所有重載兼容。 在這種情況下,您可以考慮參數是可選的。

cursor(): Coord
cursor(p: Coord): this
cursor(p?: Coord) { // p has to be optional
    if (arguments.length === 0) return this._cursor
    this._cursor = p!; // non-null assertion
    return this
}

請注意,一旦您知道 p 已定義,您還需要對 p 進行非空斷言。

暫無
暫無

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

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