Typescript присваивает тип объекту из типа другого типа - PullRequest
0 голосов
/ 18 марта 2020

У меня есть такой тип:

export function reorderPiece(contentId:string, id:string, otherId:string){
  return {
    type: REORDER_PIECE_PENDING,
    payload: {id, otherId, contentId}
  }
}

Это действие проходит через конвейер (который я не могу реорганизовать в данный момент), и в другой функции мне нужно назначить тип полезной нагрузки к объекту.

Я могу легко получить тип возврата reorderPiece:

x:ReturnType<typeof reorderPiece> и доступ x.payload. Но как мне назначить тип полезной нагрузки (это {id:string, otherId:string, contentId:string} автоматически, выбирая этот тип из типа ReturnType<typeof reorderPiece>, чтобы x был похож на typeof ReturnType<typeof reorderPiece>.payload, так что x будет иметь тип {id:string, otherId:string, contentId:string}, и я могу получить к нему доступ как x.id или x.contentId?

Я знаю, что всегда могу написать такой тип явно (или неявно) и использовать этот тип в моем методе, но мне интересно, можно ли выбрать этот введите из метода автоматически.

(я нахожусь на Typescript 3.7.5)

1 Ответ

1 голос
/ 18 марта 2020

Вы можете использовать lookup type:

Синтаксически они выглядят в точности как доступ к элементу, но записываются как типы

declare const x: ReturnType<typeof reorderPiece>['payload'];

Детская площадка

...