redux - TypeScript-gränssnitt med spridda medlemmar
Jag importerar en massa fastigheter i bulk med
import * as actionCreators from './billingUtil2';och TypeScript identifierar korrekt varje export inuti actionCreators. Är det möjligt att "sprida" dessa medlemmar till ett interface? Helst något sådant här, men giltigt
interface componentState {
...actionCreators
}
Mitt användningsfall är att jag skulle vilja skapa en React-komponent och noggrant beskriva formen på de props den kommer att ta emot från Redux. Så idealiskt något i den här stilen
import * as actionCreators from './billingUtil2';
interface State {
name: string;
age: number
}
interface componentState extends State {
...actionCreators
}
och sedan skulle jag kunna berätta för TypeScript att förvänta sig props i formen componentState. Mina redux-reducers skulle redan returnera resultat som implementerar ett gränssnitt; mitt huvudmål här är att undvika att manuellt skriva ut varje action creator.
Svar #1
Du skulle kunna skapa en intersections typ
import * as actionCreators from './billingUtil2';
type MyState = typeof actionCreators & {
name: string
age: number
}
eller från din kod i den andra sektionen ovan, där du hade State-gränssnittet, kunde du göra
import * as actionCreators from './billingUtil2';
interface State {
name: string;
age: number
}
type componentShape = typeof actionCreators & State;
eller du skulle kunna göra på liknande sätt
type acT = typeof actionCreators
interface MyState extends acT {
name; age;
}
class Comp extends React.Component<{}, MyState> {
}
