新反應/打字稿。我正在嘗試使用打字引數創建一個函式。
例子:
export function get_prod(category: string) { ...}
問題是我有 2 個產品場景。一個可以有一個可選類別,另一種型別需要一個類別才能僅加載該類別中的產品,但其他功能幾乎相同。
我想做這樣的事情:
if category = 'ebook' {
arg = 'category: string'
} else
arg = 'category?: string'
}
export function get_prod(arg) { ...}
處理這個問題的最佳方法是什么?
uj5u.com熱心網友回復:
您可以使用型別別名來定義自定義型別并接受它們的聯合作為引數(基本上,任何一個)。例如:
type Book = { category: string };
type Other = { id: number, category?: string };
const getProduct = (product: Book | Other) => {
// ...
};
uj5u.com熱心網友回復:
我認為你必須使用這樣的多載:
type TProduct = {
productName: string
id: number
};
function getProduct(category: 'ebook'): TProduct
function getProduct(id: number, category?: string): TProduct
function getProduct(category?: any, id: any): TProduct {
return { productName: 'productName', id: 123 };
}
const productA = getProduct(123);
const productB = getProduct(123, 'dasdsa');
const productC = getProduct('ebook');
uj5u.com熱心網友回復:
type Params = {category: 'ebook'} | {category?: string; otherParam: unknown};
export function get_prod(arg: Params) { ...}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529953.html
標籤:反应打字稿
上一篇:RxJS和TypeORM:使用iif()不受控制地保存物件
下一篇:ReduxSaga:'string'型別的引數不可分配給'TakeableChannel<unknown>'型別的引數
