Existe uma maneira de permitir que uma função javascript saiba que um determinado parâmetro é de um determinado tipo?
Ser capaz de fazer algo assim seria perfeito:
function myFunction(Date myDate, String myString)
{
//do stuff
}
Obrigado!
Atualização : Sendo a resposta um retumbante "não", se eu quiser myDate
ser tratado como uma data (para chamar funções de data), preciso defini-la como uma data dentro da função ou definir uma nova variável de tipo Data para ele?
javascript
function
dmr
fonte
fonte
Date
apenasobject
.Date
é uma função. Dê uma olhada em stackoverflow.com/questions/1646698/… para descobrir mais sobre anew
palavra-chave JavaScript . Além disso, como não há classes, não há transmissão. Você pode simplesmente chamar as funções que deseja. Se o objeto os contiver, eles serão executados; caso contrário, você receberá um erro.Respostas:
Não, o JavaScript não é uma linguagem de tipo estaticamente. Às vezes, pode ser necessário verificar manualmente os tipos de parâmetros em seu corpo funcional.
fonte
instanceof
etypeof
para ajudar nisso. Embora isso exija mais código, talvez o desenvolvedor tenha escolhido o JavaScript como idioma para algo que depende muito dos tipos. Quanto aos enormes aplicativos de back-end do nodejs? Eu acho que deveria ser bom senso.Não em javascript, mas usando o modo avançado do Google Closure Compiler, você pode fazer isso:
Consulte http://code.google.com/closure/compiler/docs/js-for-compiler.html
fonte
foo( /*MyType*/ param )
maneira descrita aqui também funciona: stackoverflow.com/a/31420719/1915920Embora você não possa informar ao JavaScript o idioma sobre os tipos, é possível informar seu IDE sobre eles, para obter um preenchimento automático muito mais útil.
Aqui estão duas maneiras de fazer isso:
Use o JSDoc , um sistema para documentar o código JavaScript nos comentários. Em particular, você precisará da
@param
diretiva :Você também pode usar o JSDoc para definir tipos personalizados e especificar aqueles nas
@param
diretivas, mas observe que o JSDoc não fará nenhuma verificação de tipo; é apenas uma ferramenta de documentação. Para verificar os tipos definidos no JSDoc, consulte o TypeScript , que pode analisar as tags JSDoc .Use a dica de tipo especificando o tipo logo antes do parâmetro em
/* comment */
:Essa é uma técnica bastante difundida, usada pelo ReactJS, por exemplo. Muito útil para parâmetros de retornos de chamada passados para bibliotecas de terceiros.
TypeScript
Para uma verificação de tipo real, a solução mais próxima é usar o TypeScript, um superconjunto ( principalmente ) de JavaScript. Aqui está o TypeScript em 5 minutos .
fonte
VSCode
?vi
é um editor excessivamente abusado, não um IDE. Você pode fazer muitas coisasvi
, assim como criar vídeos de música no Excel . Boa ideia? Provavelmente não. Use a ferramenta certa para o trabalho.Confira a nova biblioteca Flow do Facebook, "um verificador de tipo estático, projetado para encontrar erros de tipo em programas JavaScript"
Definição:
Verificação de tipo:
E aqui está como executá-lo .
fonte
Não, em vez disso, você precisaria fazer algo assim, dependendo de suas necessidades:
fonte
Você pode implementar um sistema que lida com as verificações de tipo automaticamente , usando um wrapper em sua função.
A implementação a seguir ilustra a ideia principal, de uma maneira simplista, mas operacional :
fonte
Edit: Sete anos depois, esta resposta ainda recebe votos ocasionais. Tudo bem se você estiver procurando por verificação em tempo de execução, mas agora eu recomendaria a verificação de tipo em tempo de compilação usando o Typecript, ou possivelmente o Flow. Consulte https://stackoverflow.com/a/31420719/610585 acima para obter mais informações.
Resposta original:
Não está embutido no idioma, mas você pode fazer isso facilmente. A resposta de Vibhu é o que eu consideraria a maneira típica de verificar o tipo em Javascript. Se você quiser algo mais generalizado, tente algo como isto: (apenas um exemplo para você começar)
fonte
Isso pode ser feito facilmente com o ArgueJS :
fonte
Use
typeof
ouinstanceof
:fonte
Talvez um ajudante funcione assim. Mas se você se vê usando essa sintaxe regularmente, provavelmente deve mudar para o Typecript.
fonte
Eu estive pensando sobre isso também. Em um plano de fundo C, você pode simular tipos de código de retorno de função, bem como tipos de parâmetro, usando algo como o seguinte:
O número antes da função de chamada retorna um tipo de número, independentemente do tipo do valor real retornado, como visto na segunda chamada em que typeof rc = number, mas o valor é NaN
o console.log para o acima é:
fonte
TypeScript é uma das melhores soluções por enquanto
https://www.typescriptlang.org/
fonte