TypeScript β ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ JS. ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² JavaScript.
site:
IDE online:
ΠΠ΅ΠΏΠ»ΠΎΡ
ΠΎΠΉ Π²ΠΈΠ΄Π΅ΠΎΠΊΡΡΡ Π½Π° ΡΡΡΡΠΊΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ·ΡΠΊΠ° Π² ΡΠΈΡΡΠ΅ΠΌΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ (ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ typescript ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ)
npm install -g typescript
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
npm ΠΈ typescript
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
$ npm init
ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:
$ npm init -y
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
$ npm install -D typescript
(-D β Π·Π½Π°ΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ --save-dev)
ΠΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² package.json ΡΠ²ΠΈΠ΄ΠΈΠΌ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ devDependencies Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΎΡ typescript
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅Π³ΠΎ ΡΠΌ
./src β Π΄Π»Ρ ts-ΡΠΊΡΠΈΠΏΡΠΎΠ²
./dist - Π΄Π»Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»Π΅Π½Π½ΡΡ
js-ΡΠ°ΠΉΠ»ΠΎΠ²
tsconfig.json
Π‘Π»ΡΠΆΠΈΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° TypeScript.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³Π° (tsconfig.json
) Π΄Π»Ρ typescript (ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ts-ΡΠΊΡΠΈΠΏΡ Π½Π΅ ΠΏΡΠΎΠ³ΠΎΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π· tsc Π²ΡΡΡΠ½ΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π΄Π°Π»Π΅Π΅ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅):
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
{
"compilerOptions": {}, // Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
"exclude": ["./test.ts", "./src/test2.ts"], // Π’Π΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π·Π°Ρ
ΠΎΡΠΈΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
"include": [
"./src/**/*" // Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Ρ
ΠΎΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡ
],
"files": [
"./app.ts" // ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
]
}
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π² exclude Π²Ρ
ΠΎΠ΄ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ node_modules. ΠΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π΅ Π½Π°Π΄ΠΎ.
ΠΡΠΎ compilerOptions
:
{
"compilerOptions": {
"target": "es6", // ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ es5, Π½ΠΎ es6 ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΡΡΠΈ Π²ΠΎ Π²ΡΠ΅Ρ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
"module": "commonjs", // ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ webpack (ΠΏΠΎΠΊΠ° Ρ
Π· ΡΡΠΎ ΠΎ ΡΠ΅ΠΌ)
"outDir": "./dist", // ΠΡΠ΄Π° ΠΊΠ»Π°ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»Π΅Π½Π½ΡΠ΅ js
"rootDir": "./src", // ΠΠ΄Π΅ ΠΊΠΎΡΠ½Π΅Π²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ts-ΠΊΠΎΠ΄ΠΎΠΌ
// "lib": [] // ΡΠΌ Π½ΠΈΠΆΠ΅,
// "allowJs": true, // ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅ΡΠ»ΠΈ ΠΌΡ Π²Π΅Π΄Π΅ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π½Π° JS
// "checkJs": true, // ΠΈ Ρ
ΠΎΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΠΈ TS
// "jsx": "preserve" // ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° React ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ TS
// "sourceMap": true, //
}
}
ΠΡΠΎ lib
Π Π°Π·ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΠ²Π°Π΅ΠΌ lib
Π² tsconfig.json.
ΠΠΎΠΏΡΡΡΠΈΠΌ Π² html Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡ:
<body>
<div class="container">
<button class="btn" id="btn">Click me pls</button>
</div>
</body>
Π typescript ΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Π½Π΅ΠΉ:
const btn = document.querySelector('#btn')
Π TypeScript Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΎ Π·Π° document. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π² typescript ΠΎΡΠΊΠ»ΡΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ ΠΊ Browser API (ΠΏΠΎΠ»Π΅ lib ΠΏΡΡΡΠΎΠ΅). ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° lib ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² typescript.
ΠΡΠ»ΠΈ lib Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΠ½ΠΎ, ΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ (ΡΠΎ Π΅ΡΡΡ Ρ Π½Π°Ρ ΡΠ°ΠΊΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ). ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ? ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ½ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΠ³ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΡΠΊΡΠΈΠΏΡ.
ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°ΠΉΠ» test.ts
:
const str: string = 'Hello'
console.log(str)
ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ TypeScript (ΡΡΠ΄ΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π»Π΅ΠΆΠ°ΡΡ test.js ΠΏΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ):
$ tsc test.st
Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ (ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΡΡΡ tsconfig.json):
$ tsc
Π§ΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡΡ tsc, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π» ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±ΡΠ΄ΡΡ ΡΡΠ°Π·Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»Π΅Π½Ρ:
$ tsc --watch
ΠΈΠ»ΠΈ
$ tsc -w
ΠΠΎΠ΄Π³ΡΡΠ·ΠΊΠ° Π² html. ΠΡΡΠΈΠ±ΡΡ defer
ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ° Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²ΡΡ ΡΡΡΠ°Π½ΠΈΡΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ.:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>TypeScript</title>
<!-- Compiled and minified CSS -->
<script src="dist/app.js" defer></script>
</head>
<body>
<div class="container">
</div>
</body>
</html>