Zaczynam używać TypeScript w projekcie Node, nad którym pracuję w Visual Studio Code. Chciałem zastosować strategię „opt-in”, podobnie jak w przypadku Flow. Dlatego umieszczam // @ts-check
na początku mojego .js
pliku w nadziei, że włączę TS dla tego pliku. Ostatecznie chcę mieć takie same wrażenia z „lintingu” jak Flow, dlatego zainstalowałem wtyczkę TSLint, aby zobaczyć ostrzeżenia / błędy Intellisense.
Ale z moim plikiem wyglądającym tak:
// @ts-check
module.exports = {
someMethod: (param: string): string => {
return param;
},
};
a mój tsconfig.json
plik wygląda jak ...
{
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"allowJs": true
}
}
Otrzymuję ten błąd: [js] 'types' can only be used in a .ts file.
jak pokazano poniżej na obrazku.
Widziałem to pytanie, które zalecało wyłączenie walidacji javascript w vscode, ale wtedy nie pokazuje mi żadnych informacji TypeScript Intellisense.
Próbowałem ustawienie tslint.jsEnable
się true
w moich ustawieniach vscode jak wspomniano w TSLint docs przedłużających ale bez powodzenia tam.
Jaka jest prawidłowa konfiguracja, aby używać .js
plików z TypeScript i pobierać Intellisense, aby wiedzieć, jakie są błędy w moim kodzie, zanim uruchomię jakiekolwiek polecenia TS?
.ts
pokazywać mi błędy / ostrzeżenia TS zgodnie z oczekiwaniami. Wydaje mi się, że to może zadziałać, ale liczyłem na większą część metody opt-in przy@ts-check
jednoczesnym zachowaniu wszystkich moich rozszerzeń.js
Odpowiedzi:
Używam @flow z vscode, ale miałem ten sam problem.
źródło
"javascript.validate.enable": false
Użyj
"javascript.validate.enable": false
w ustawieniach VS Code, nie wyłącza ESLINT. Używam zarówno ESLINT, jak i Flow. Wystarczy postępować zgodnie z instrukcjami Flow For Vs Code SetupDodanie tego wiersza w settings.json. Pomaga
"javascript.validate.enable": false
źródło
Include Languages Enable Emmet abbreviations in languages that are not supported by default. Add a mapping here between the language and emmet supported language. E.g.: {"vue-html": "html", "javascript": "javascriptreact"}
kliknij Edytuj w settings.json i dodać to:"javascript.validate.enable": false
.Musisz użyć
.ts
pliku - np.test.ts
Aby uzyskaćwalidacjęTypescript, intelisensetyping
of vars, typy zwracane, a także sprawdzanie "wpisanych" błędów (np. Przekazanie astring
do metody, która oczekujenumber
parametru, spowoduje błąd).Zostanie przeniesiony do (standard)
.js
za pośrednictwemtsc
.Aktualizacja (11/2018):
Potrzebne jest wyjaśnienie na podstawie głosów przeciw, bardzo pomocnych komentarzy i innych odpowiedzi.
types
Tak, możesz
type
sprawdzać VS Code w.js
plikach za pomocą@ts-check
- jak pokazano na animacjiTo, do czego pierwotnie odnosiłem się w przypadku maszynopisu,
types
to coś takiego,.ts
co nie jest tym samym:hello-world.ts
To się nie skompiluje.
Error: Type "1" is not assignable to String
jeśli wypróbowałeś tę składnię w pliku Javascript
hello-world.js
:Wyświetlany jest komunikat o błędzie, do którego odwołuje się OP:
[js] 'types' can only be used in a .ts file
Jeśli jest coś, co przegapiłem, co obejmuje to, a także kontekst PO, dodaj. Nauczmy się wszyscy.
źródło
.ts
. IINM, próbki pokazują kontrolę błędów i inteligencję . Kwestia masz jest (statyczny)type
ing zmienne i powrotutypes
, jak również - na przykładfoo:string
,bar:number
,fubar:MyClass
,myMethod(f:Array):void
,anotherMethod():string
. Hth ...@ts-check
atrybutu. Bardzo mylące ...Dla każdego, kto tu wyląduje, a wszystkie inne rozwiązania nie zadziałały, spróbuj. Używam TypeScript + React i moim problemem było to, że kojarzyłem pliki w vscode, ponieważ
javascriptreact
nie,typescriptreact
więc sprawdź ustawienia dla następujących wpisów.źródło