Typescript , .
, , .
function genericFunction<T>(value: T): T {
return value;
}
let val = genericFunction(window);
, T .
- generic.
function genericFunction2<T>(value: T, anotherValue: T) : T {
return value;
}
let val = genericFunction2("b", "5");
let anotherVal = genericFunction2("b", 5);
, T .
- , .
function callBackAndValue<T>(action: (value: T) => T, value: T): T {
return action(value);
}
let val = callBackAndValue((value: string) => value + "5", "abc ");
, T .
- , , .
function callBackAndValueWithPromise<T>(action: (value: T) => T, value: T): Promise<T> {
return new Promise<T>((resolve, reject) => {
resolve(action(value));
});
}
let val = callBackAndValueWithPromise((value: string) => value + "5", "abc ");
, T .
- , T T
function onlyCallback<T>(action: () => T) : T {
return action();
}
let val = onlyCallback(()=> "abc");
, T .
- , T, .
function onlyCallbackWithPromise<T>(action: () => T): Promise<T> {
return new Promise<T>((resolve, reject) => {
resolve(action());
});
}
let val = onlyCallbackWithPromise(()=> "abc");
, T .
- , , . .
function typeFromCallbackOfCallback<T>(action: (callback: (value: T) => void) => void): Promise<T> {
return new Promise<T>((resolve, reject) => {
action((value) => {
resolve(value);
});
});
}
let val = typeFromCallbackOfCallback(cb => cb("abc"));
, .
, , , . , , , .
T , .
function lastOne<T>(action: (callback: (value: T) => void) => void, b: T): Promise<T> {
return new Promise<T>((resolve, reject) => {
action((value) => {
resolve(value);
});
});
}
let var = lastOne(cb => cb("abc"), "a");
, T .