#Associating return type to input function type

4 messages · Page 1 of 1 (latest)

rapid kelp
#

Hi guys, I've got such a code (message below)

I'm trying to write function with such a signature, but TS does not infer the types, although I was hoping it would. Does anyone know how could I fix it to maintain compile-time check between the input and output type?

function handleRequest<T extends MyRequest>(request: T): RequestToResponseMap[T['type']] { ... }
charred zodiacBOT
#
wdanilo#0

Preview:```ts
// === Requests ===

type MyRequest = AnalysisRequest | AnalysisRequest2

interface AnalysisRequest {
type: 'AnalysisRequest'
data: string
}

interface AnalysisRequest2 {
type: 'AnalysisRequest2'
data: string
}

// === Responses ===

interface AnalysisResponse {
...```

rapid kelp
#

oh. here is an updated link, there was a typo in the code:

charred zodiacBOT
#
wdanilo#0

Preview:```ts
// === Requests ===

type MyRequest = AnalysisRequest | AnalysisRequest2

interface AnalysisRequest {
type: 'AnalysisRequest'
data: string
}

interface AnalysisRequest2 {
type: 'AnalysisRequest2'
data: string
}

// === Responses ===

interface AnalysisResponse {
...```