traducir significa qué palabras orden inglés ingles español escribe cómo como buscar alfabetico typescript

typescript - significa - Mecanografiado y propagación operador?



traducir al español (2)

Creo que @Fenton lo explica muy bien, pero me gustaría agregar más documentación y posibles soluciones.

Soluciones:

Sobrecarga de funciones Prefiero esta solución en este caso porque mantiene algún tipo de seguridad y evita ignorar y cualquier tipo. El método original y la llamada de función no necesitan ser reescritos en absoluto.

function foo(...args: number[]): void function foo(x: number, y: number, z: number) { console.log(x, y, z); } var args: number[] = [0, 1, 2]; foo(...args);

Utilice @ts-ignore para ignorar una línea específica, TypeScript 2.3

function foo(x: number, y: number, z: number) { console.log(x, y, z); } var args: number[] = [0, 1, 2]; // @ts-ignore foo(...args);

Usar como cualquier.

function foo(x: number, y: number, z: number) { console.log(x, y, z); } var args: number[] = [0, 1, 2]; (foo as any)(...args);

Enlace con la documentación sobre el operador de propagación:

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html

Discusiones sobre esto:

https://github.com/Microsoft/TypeScript/issues/5296 https://github.com/Microsoft/TypeScript/issues/11780 https://github.com/Microsoft/TypeScript/issues/14981 https://github.com/Microsoft/TypeScript/issues/15375

function foo(x:number, y:number, z:number) { console.log(x,y,z); } var args:number[] = [0, 1, 2]; foo(...args);

¿Por qué recibo este error en Typescript Playground ???

Los parámetros suministrados no coinciden con ninguna firma del objetivo de llamada.


Entonces hay una pequeña cláusula que puede haber pasado por alto:

La verificación de tipos requiere que los elementos distribuidos coincidan con un parámetro de descanso.

Sin Rest Paramater

Pero puede usar una aserción de tipo para ser dinámica ... y se convertirá nuevamente a ES5 / ES3 por usted:

function foo(x:number, y:number, z:number) { console.log(x,y,z); } var args:number[] = [0, 1, 2]; (<any>foo)(...args);

Esto da como resultado la misma llamada de función de apply que esperaría:

function foo(x, y, z) { console.log(x, y, z); } var args = [0, 1, 2]; foo.apply(void 0, args);

Con parámetro de descanso

La alternativa es que todo funcione tal como se espera si la función acepta un parámetro de reposo.

function foo(...x: number[]) { console.log(JSON.stringify(x)); } var args:number[] = [0, 1, 2]; foo(...args);