Reputation:
Say I have this function definition:
export type ErrorValueCallback = (err: any, val?: any) => void;
a standard callback interface. And I can use it like so:
export const foo = function(v: string, cb:ErrorValueCallback){
cb(null, 'foo');
};
But what if want to make this callback generic, something like this:
export type EVCallback = <T>(err: any, val: T) => void;
that syntax works, but when I try to use it:
export const foo = function(v: string, cb:ErrorValueCallback<string>){
cb(null, 'foo');
};
I get an error
ErrorValueCallback is not generic
how do I what I am looking to do?
Upvotes: 3
Views: 5407
Reputation: 24274
I think you wanted to use EVCallback instead
export type EVCallback<T> = (err: any, val: T) => void;
like this:
export const foo = function(v: string, EVCallback<string>){
cb(null, 'foo');
};
Upvotes: 0
Reputation: 276085
You need to add the generic to the type type ErrorValueCallback<T>
export type ErrorValueCallback<T> = (err: any, val: T) => void; // FIX
export const foo = function(v: string, cb:ErrorValueCallback<string>){
cb(null, 'foo');
};
Upvotes: 7