Javascript Typescript承诺中的GenericType参数是什么<;通用类型>;定义?
只是想知道TypescriptsJavascript Typescript承诺中的GenericType参数是什么<;通用类型>;定义?,javascript,typescript,promise,Javascript,Typescript,Promise,只是想知道TypescriptsPromisePromise定义中的泛型类型是否是传递给then处理程序的对象的类型 例如,这项工作: const pr:Promise<Array<Number>> = Promise.resolve([1, 2, 3]); const handler = (arg:Array<Number>)=> { console.dir(arg); } pr.then(handle
Promise
Promise定义中的泛型类型是否是传递给then
处理程序的对象的类型
例如,这项工作:
const pr:Promise<Array<Number>> = Promise.resolve([1, 2, 3]);
const handler = (arg:Array<Number>)=> {
console.dir(arg);
}
pr.then(handler);
const pr:Promise=Promise.resolve([1,2,3]);
常量处理程序=(参数:数组)=>{
console.dir(arg);
}
pr.then(处理者);
另一个相关问题。如果我们将处理程序
设为处理程序:函数
,那么vscode会在pr.then(处理程序
部分代码下投诉/绘制红色曲线。typescript是否具有可分配给处理程序函数的类型
只是想验证GenericType部分是否是promise执行的异步操作的结果的返回类型
不完全是。在您的示例中没有泛型类型:您为所有内容都提供了一个具体类型
你(我想)想要的是:
这里的
wrappedString
将具有该具体类型,无论您是否对其进行注释。承诺只是异步值的容器,就像数组是多个值的容器一样。您必须指定它们所包含的内容的类型。实际上-只是想验证GenericType部分是返回类型,即rpromise执行的异步操作的结果?
const pr:Promise<Array<Number>> = Promise.resolve([1, 2, 3]);
// handler here is declared with type Array<Number> -> void
const handler = (arg:Array<Number>): void => { // NOTE: void
console.dir(arg);
}
pr.then(handler);
// doubleToString has type Number -> String
const doubleToString = (n: Number): String => (n * 2).toString();
const doubledAndStringed: Promise<Array<String>> = pr.then(arr => arr.map(doubleToString));
const repeatString = (s: String): String => s.repeat(1);
const repeated: Promise<Array<String>> = pr.then(arr => arr.map(repeatString))
const wrap = (x: T): Promise<T> => Promise.resolve(x);
const wrappedString: Promise<String> = wrap('hello!');