2012-03-20 4 views
9

Sono un novizio con JavaScript e sento il bisogno unresistible a forti tipo mie funzioni parametri per un paio di strumenti che sto Coding:JavaScript: posso in qualche modo un forte tipo di parametri di funzione?

  1. Che sarebbe darmi il completamento automatico all'interno di tali funzioni
  2. Debug/accesso alle funzioni diventa più consistente

Dopo alcuni googling, immagino che questo non sia direttamente possibile. Tuttavia, ci sono strumenti comuni per emulare questo piuttosto semplicemente?

Quali sono i tuoi pensieri?

+0

No, almeno non nel senso che consentirebbe di utilizzare uno dei punti che hai menzionato. – carlossless

+7

La lingua non è proprio così. Come con qualsiasi altra nuova lingua che impari, è molto importante resistere alla tentazione di importare idiomi da altre lingue con cui hai già familiarità. Lascia che JavaScript sia JavaScript e andrai molto d'accordo. – Pointy

risposta

9

No, non puoi e anche se c'è un modo che non dovresti. JavaScript è un linguaggio digitato in modo dinamico. Per il completamento automatico è possibile comunque utilizzare i tag JSDoc documentazione stile che danno alcune indicazioni di tipo:

var Person = { 
    /** 
    * Say hi 
    * @param {String} name The name to say hi to 
    * @return {String} 
    */ 
    sayHi : function(name) 
    { 
     return 'Hi ' + name; 
    } 
} 

Se sono utilizzati dipende interamente dal vostro IDE però.

+0

Javascript 2, che sarà completato entro la fine del 2013, aggiungerà una digitazione facoltativa. – Viesturs

+0

a) Continuo a pensare che sia una cattiva idea eb) questo non lo farà in produzione fino a tre anni forse. – Daff

+2

La forte digitazione consente agli sviluppatori di rilevare più rapidamente gli errori che altrimenti si verificano in fase di esecuzione. Perché pensi che sia una cattiva idea? – LadyCailin

0

no non puoi; javascript è un linguaggio debolmente tipizzato. Ciò significa che JavaScript individuerà il tipo di dati che hai.

3

Hai guardato Google Closure Compiler?

Alcuni IDE (come i prodotti di Jetbrains) cercano di capire JSDoc e dare una mano, ma a volte il loro parser di annotazioni è in conflitto con Google Closure. Tuttavia, anche con Closure non otterrai una perfetta digitazione perfetta.

Inoltre, potrebbe essere eccessivo, ma guardare haXe.

2

JavaScript riconosce i seguenti tipi di valori:

Numeri: come ad esempio 42 o 3,14159

Logical (booleani): valori true o false

Strings: tale come "Howdy!"

null: una parola chiave speciale che denota un valore nullo; null è anche un valore primitivo. Poiché JavaScript fa distinzione tra maiuscole e minuscole, null non è uguale a Null, NULL o qualsiasi altra variante

indefinito: una proprietà di livello superiore il cui valore non è definito; undefined è anche un valore primitivo.

Non v'è alcuna esplicita distinzione tra numeri interi e valori reali [...]

JavaScript è un linguaggio tipizzato in modo dinamico.Ciò significa che non c'è bisogno di specificare il tipo di dati di una variabile quando si dichiara, e tipi di dati vengono convertiti automaticamente in base alle esigenze durante l'esecuzione dello script

Da https://developer.mozilla.org/en/JavaScript/Guide/Values%2C_Variables%2C_and_Literals

Quindi, no, non si può usa il tipo forte in JavaScript

10

Le persone che scrivono "non dovresti usarlo" sono sbagliate. Nella prossima specifica di Java Script 2.x c'è un piano per aggiungere forti variabili tipizzate.

Nel frattempo è possibile utilizzare una soluzione molto semplice per emulare tipi di forza:

var = Object.create(String); 

Dopo che autocompleting in un sacco di IDE (compresi IntelliJ IDEA) funzionano molto bene e si hanno dichiarato e inizializzato un oggetto di tipo specificato .

Ulteriori informazioni su my blog.

5

Hai guardato Typescript? È un progetto open source di Microsoft che ti permette di sviluppare usando una forte tipizzazione e poi compila il codice in Javascript. So che è Microsoft, ma dai un'occhiata prima di lasciar perdere.

http://www.typescriptlang.org/


Edit 2017

Ora ci sono due grandi giocatori in questa scena, Carattere tipografico (come suggerito sopra) è stato dimostrato di battaglia ed è ora ampiamente utilizzata da Angular 2. Se la struttura e digitazione abbastanza rigida se quello che stai cercando, questa è la soluzione migliore.

Un'altra opzione è Flow (https://flow.org/) è stata sviluppata da Facebook ed è ampiamente utilizzata da React. Flow consente di specificare solo i file che si desidera controllare e rappresenta una barriera inferiore per l'immissione di IMO.

Vale la pena dire che l'aggiunta del controllo del tipo aggiunge una notevole quantità di complessità al processo di compilazione - richiede di avere un processo di compilazione!

+0

Sì, Daff l'ha suggerito nel suo commento – Jerome

Problemi correlati