'Typescript errors 'getters' is referenced directly or indirectly in its own type annotation
Please check codes firstly,
type GettersTypes = 'foo' | 'bar'
type State = {
totalPrice: number
products: any[]
}
export type Getters = {
[key in GettersTypes]: (
state: State, getters: GettersReturnType2<Getters, key> // error 'getters' is referenced directly or indirectly in its own type annotation
) => {
price: number
discount: any
}
}
export type GettersReturnType<T, K extends string> = {
readonly [key in Exclude<keyof T, K>]: T[key] extends ((...args: any) => any) ? ReturnType<T[key]> : never
}
export type GettersReturnType2<T, U extends keyof T> = T[U] extends ((...args: any) => any) ? ReturnType<T[U]> : never
declare const getters: Getters
getters.bar = function(state, getters) {
const result = getters.foo
return {
price: 0,
discount: 1
}
}
Here is the play
In my opinion,GettersReturnType And GettersReturnType2 do the samething, but why use GettersReturnType2, ts will throw an error.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
