簡體   English   中英

如何推斷 TypeScript 中泛型的子類型?

[英]How to infer subtype of generic in TypeScript?

我有一個帶有一些參數類型的 function:

function func<T extends {field1: string}>(arg1: T) {
 // function's code
}

我有一個熟悉的泛型接口,如下所示:

interface SomeInterface<T> {
    field1: string;
}

現在我想推斷接口的通用參數並將其分配給函數的返回類型:

const value1: SomeInterface<number> = {field1: "Hello"};

const res1 = func(value1);

我需要res1的類型是number

我需要使用什么函數簽名?

function func<T extends {field1: string}>(arg1: T) : T extends ???? { // What?

如果類型沒有被任何屬性引用,那么在接口中使用泛型類型是沒有意義的。

這是一個接收泛型類型並將該類型應用於其屬性之一的接口:

interface SomeInterface<T> {
    field1: T;
}

另一方面,如果要創建具有通用返回類型的 function:

function func<T>(): T {
 // code
}

// function call
const res1 = func<number>();

最后,如果您希望您的 function 接收一個泛型類型作為參數並返回另一個泛型類型:

function func<T, R>(arg: T) : R {
 // code
}

// function call
const res1 = func<SomeInterface, number>(value1);

暫無
暫無

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

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