¿Hay alguna manera de permitir que una función de JavaScript sepa que cierto parámetro es de cierto tipo?
Ser capaz de hacer algo como esto sería perfecto:
function myFunction(Date myDate, String myString)
{
//do stuff
}
¡Gracias!
Actualización : Siendo que la respuesta es un rotundo "no", si quiero que me myDate
traten como una fecha (para llamar a las funciones de fecha), tengo que convertirla como una fecha dentro de la función o establecer una nueva variable de escriba Fecha?
javascript
function
dmr
fuente
fuente
Date
, soloobject
.Date
Es una función. Eche un vistazo a stackoverflow.com/questions/1646698/… para obtener más información sobre lanew
palabra clave JavaScript . Además, como no hay clases, no hay casting. Simplemente puede llamar a las funciones que desee. Si el objeto los contiene, se ejecutarán, de lo contrario obtendrá un error.Respuestas:
No, JavaScript no es un lenguaje de tipo estático. A veces puede que necesite verificar manualmente los tipos de parámetros en el cuerpo de su función.
fuente
instanceof
ytypeof
para ayudar en esto. Aunque esto requiere más código, tal vez sea el desarrollador quien elija JavaScript como el idioma para algo que depende en gran medida de los tipos. ¿En cuanto a las enormes aplicaciones de backend de nodejs? Creo que debería ser de sentido común.No en JavaScript, pero usando el modo avanzado del compilador de cierre de Google puede hacer eso:
Ver http://code.google.com/closure/compiler/docs/js-for-compiler.html
fuente
foo( /*MyType*/ param )
forma como se describe aquí también funciona: stackoverflow.com/a/31420719/1915920Si bien no puede informarle a JavaScript el idioma sobre los tipos, puede informar a su IDE sobre ellos, por lo que obtendrá una autocompletación mucho más útil.
Aquí hay dos formas de hacerlo:
Use JSDoc , un sistema para documentar el código JavaScript en los comentarios. En particular, necesitará la
@param
directiva :También puede usar JSDoc para definir tipos personalizados y especificarlos en las
@param
directivas, pero tenga en cuenta que JSDoc no realizará ninguna verificación de tipo; Es solo una herramienta de documentación. Para verificar los tipos definidos en JSDoc, busque en TypeScript , que puede analizar etiquetas JSDoc .Use sugerencias de tipo especificando el tipo justo antes del parámetro en a
/* comment */
:Esta es una técnica bastante extendida, utilizada por ReactJS por ejemplo. Muy útil para parámetros de devoluciones de llamada pasados a bibliotecas de terceros.
Mecanografiado
Para la verificación de tipo real, la solución más cercana es usar TypeScript, un superconjunto ( principalmente ) de JavaScript. Aquí está TypeScript en 5 minutos .
fuente
VSCode
?vi
es un editor excesivamente abusado, no un IDE. Puedes hacer muchas cosasvi
, así como puedes hacer videos musicales en Excel . ¿Buena idea? Probablemente no. Use la herramienta adecuada para el trabajo.Consulte la nueva biblioteca Flow de Facebook, "un verificador de tipos estático, diseñado para encontrar errores de tipo en programas JavaScript"
Definición:
Comprobación de tipo:
Y aquí está cómo ejecutarlo .
fuente
No, en su lugar, deberías hacer algo como esto según tus necesidades:
fuente
Puede implementar un sistema que maneje las verificaciones de tipo automáticamente , utilizando un contenedor en su función.
La siguiente implementación ilustra la idea principal, de una manera simplista, pero operativa :
fuente
Editar: Siete años después, esta respuesta todavía recibe votos positivos ocasionales. Está bien si está buscando la verificación en tiempo de ejecución, pero ahora recomendaría la verificación de tipos en tiempo de compilación usando TypeScript o posiblemente Flow. Ver https://stackoverflow.com/a/31420719/610585 arriba para obtener más información.
Respuesta original:
No está integrado en el lenguaje, pero puede hacerlo usted mismo con bastante facilidad. La respuesta de Vibhu es lo que consideraría la forma típica de verificación de tipos en Javascript. Si desea algo más generalizado, intente algo como esto: (solo un ejemplo para comenzar)
fuente
Se puede hacer fácilmente con ArgueJS :
fuente
Usar
typeof
oinstanceof
:fuente
Tal vez una función auxiliar como esta. Pero si te ves usando tal sintaxis regularmente, probablemente deberías cambiar a Typecript.
fuente
He estado pensando en esto también. Desde un fondo C, puede simular tipos de código de retorno de función, así como, tipos de parámetros, usando algo como lo siguiente:
El número antes de la función de llamada devuelve un tipo de número independientemente del tipo del valor real devuelto, como se ve en la segunda llamada donde typeof rc = número pero el valor es NaN
El console.log para lo anterior es:
fuente
TypeScript es una de las mejores soluciones por ahora
https://www.typescriptlang.org/
fuente