ΠΠ³ΡΠΎΠΌΠ½Π°Ρ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΡ Π·Π° Β ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Β ΠΏΠΎΠΌΠΎΡΡ Π² Β ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΠΌΠΈΡΡΠΈΡ ΠΠ΅ΡΠ΄Π½ΠΈΠΊΠΎΠ²Ρ ΠΈ Β ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΡ ΠΠ½ΠΊΠ΅Π΅Π²Ρ!
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΡΠ°Π·ΡΒ ΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΠ°Ρ ΡΡΠ°ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²Β ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅. ΠΠ½ Β ΡΠ΄ΠΎΠ±Π΅Π½ ΡΠ΅ΠΌ, ΡΡΠΎ Π²Π΅ΡΡΠΈΡ TypeScript Π² Β Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ any Π²ΠΌΠ΅ΡΡΠΎ unknown
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΏ any, ΡΠΎ Β ΡΠ΅ΡΡΠ΅ΠΌ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡΒ β ΠΌΡ Β ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Β Π»ΡΠ±ΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈ Β ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Β ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡ Π½Π°Ρ ΠΎ Β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ . ΠΡΠ»ΠΈΒ ΠΆΠ΅ ΠΌΡ Β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ unknown, ΡΠΎ Β ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅Ρ ΠΎ Β Π½ΠΈΡ .
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ any ΠΏΠΎ Β ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡΒ β ΡΡΠΎ Π½Π΅ Β ΡΠΎΠ²ΡΠ΅ΠΌ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π²ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
// JSON.parse
const a = JSON.parse('{ a: 1 }'); // any
// Array.isArray
function parse(a: unknown) {
if (Array.isArray(a)) {
console.log(a); // a[any]
}
}
// fetch
fetch("/")
.then((res) => res.json())
.then((json) => {
console.log(json); // any
});
// localStorage, sessionStorage
const b = localStorage.a; // any
const c = sessionStorage.b // any
ΠΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡΒ ts-reset.Β
ts-resetΒ β ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΅ΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ, ΡΡΠΎΠ±Ρ TypeScript ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π» ΠΈΠ½Π°ΡΠ΅.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΡΡΠΎΠ³ΠΈΠ΅ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ as const
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π°Ρ has Ρ Set ΠΈ Map.
ΠΡΠΈΠΌΠ΅Ρ: ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ as const, Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ includes ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ 4 Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΡΠΈΠΏΠ΅ userIds.
const userIds = [1, 2, 3] as const;
userIds.includes(4);
ΠΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅Β ts-reset.
ΠΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡ undefined
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ‑ΡΠΎ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ undefined. Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΡΠΈΡ undefined, ΠΎΡΡΠΈΠ»ΡΡΡΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ². ΠΠΎ ΠΌΠ°ΡΡΠΈΠ² newArr Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΏ ΠΌΠ°ΡΡΠΈΠ²Π° number ΠΈΠ»ΠΈ undefined.
const arr = [1, 2, undefined];
const newArr = arr.filter((item) => item !== undefined);
Π Π΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎΠ³Π΄Π° newArr2 Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ number:
const newArr2 = arr.filter((item): item is number => item !== undefined);
Π’Π°ΠΊΠΆΠ΅ ts-reset ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ filter ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ BooleanConstructor.
const filteredArray = [1, 2, undefined].filter(Boolean)
Π‘ΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΠΎΠ±ΠΎΡΠ½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠΈ
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΠΈΠΏΠΎΠΌ ΠΊΠ»ΡΡ ΡΡΡΠΎΠΊΠ°, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ.Β
ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΊΠΎΠ±ΠΎΡΠ½ΡΡ Π½ΠΎΡΠ°ΡΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ ΡΠΈΠΏ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ. Π typescript Π²Π΅ΡΡΠΈΠΈ Π½ΠΈΠΆΠ΅ 4.7 ΡΠΈΠΏ queryCountry Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΡΡΠΎΠΊ, Ρ.Π΅. Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Ρ ΠΎΡΡ ΠΌΡ ΡΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ.Β
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ typescript Π²Π΅ΡΡΠΈΠΈ 4.7 ΠΈ Π²ΡΡΠ΅, ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ ΡΡΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ.
const query: Record<string, string | string[]> = {};
const COUNTRY_KEY = 'country';
if (typeof query[COUNTRY_KEY] === 'string') {
const queryCountry: string = query[COUNTRY_KEY];
}
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.Β
ΠΡΠΎΠ±Π»Π΅ΠΌΡ enum
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ enum ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ³Π΄Π° Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ Π±ΡΠ΄ΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡ 0 ΠΈ Π΄Π°Π»Π΅Π΅.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ enum Π·Π°ΡΠΈΠΏΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ showMessage, Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ, ΡΡΠΎ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² enum:
enum LogLevel {
Debug, // 0
Log, // 1
Warning, // 2
Error // 3
}
const showMessage = (logLevel: LogLevel, message: string) => {
// code...
}
showMessage(0, 'debug message');
showMessage(2, 'warning message');
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ΡΡ Π² enum Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΡΠΈΠ±ΠΊΡ "Argument of type '-100' is not assignable to parameter of type 'LogLevel'". ΠΠΎ Π² typescript Π½ΠΈΠΆΠ΅ Π²Π΅ΡΡΠΈΠΈ 5.0 ΡΠ°ΠΊΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅Ρ, Ρ ΠΎΡΡ ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ:Β
showMessage(-100, 'any message')
Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ enum ΠΈ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ½ΡΡΠ°Π½ΡΠ΅ a ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠΈΠΏ enum ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π»ΡΠ±ΠΎΠ΅ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅Ρ Π² enum, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 1. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ TS Π½ΠΈΠΆΠ΅ 5 Π²Π΅ΡΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
enum SomeEvenDigit {
Zero = 0,
Two = 2,
Four = 4
}
const a: SomeEvenDigit = 1;
Π Π΅ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ: ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ TypeScript Π½ΠΈΠΆΠ΅ 5 Π²Π΅ΡΡΠΈΠΈ, Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² enum.
enum User {
name = 'name',
userName = `user${User.name}`
}
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ undefined, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ²Π½ΡΠΉ Π²ΠΎΠ·Π²ΡΠ°Ρ
Π Π²Π΅ΡΡΠΈΡΡ TypeScript Π½ΠΈΠΆΠ΅ 5.1 Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° Π² ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ ΡΠΈΠΏ undefined, Π½ΠΎ Π½Π΅Ρ return.
function f4(): undefined {}
ΠΡΠΈΠ±ΠΊΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ :
function f1() {}
function f2(): void {}
function f3(): any {}
ΠΠ°ΠΊΡΠ΅ΠΏΠΈΠΌ. ΠΡΠ»ΠΈ ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠΏ void ΠΈΠ»ΠΈ any, ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠ½Π° ΠΏΠΎΡΠ²ΠΈΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠΏ undefined, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ TypeScript Π²Π΅ΡΡΠΈΠΈ Π½ΠΈΠΆΠ΅ 5.1.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ enumβΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½ΠΎΠΌΠΈΠ½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, Π° Π½Π΅ ΡΡΡΡΠΊΡΡΡΠ½ΠΎΠΉ
Π ΡΡΠΎ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Ρ TypeScript ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΡΡΡΠΊΡΡΡΠ½Π°Ρ.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ enum ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΈΠΏΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΡΡΠΈΠΌ enum. ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ enum. ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΊΡ Π² showMessage ΡΠΈΠΏ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° 'Debug' Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΡΠΈΠΏ enum 'LogLevel'.
enum LogLevel {
Debug = 'Debug',
Error = 'Error'
}
const showMessage = (logLevel: LogLevel, message: string) => {
// code...
}
showMessage('Debug', 'some text')
ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ enum Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
enum LogLevel2 {
Debug = 'Debug',
Error = 'Error'
}
showMessage(LogLevel2.Debug, 'some text')
Π Π΅ΡΠ΅Π½ΠΈΠ΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ as const.
const LOG_LEVEL = {
DEBUG: 'debug',
ERROR: 'error'
} as const
type ObjectValues = T[keyof T]
type LogLevel = ObjectValues;
const logMessage = (logLevel: LogLevel, message: string) => {
// code...
}
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ, ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ, Π²Π΅Π΄Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΎΡΠΊΡΠ΄Π° ΠΎΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ.
logMessage('debug', 'some text')
logMessage(LOG_LEVEL.DEBUG, 'some text')
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΎΠΉ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ ΠΎΡΠΈΠΌ Π²Π΅ΡΠ½ΡΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠΎΠΊΡ, Π΅ΡΠ»ΠΈ 2 Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. Π‘ΠΎΠ·Π΄Π°ΡΠΌ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈ Π½Π°ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ Π²Π΅ΡΠ½ΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ°Π³Π΅ Π±ΡΠ»Π° ΡΠΊΠ°Π·Π°Π½Π° ΡΡΡΠΎΠΊΠ°.
function add(x: string, y: string): string
function add(x: number, y: number): number
function add(x: unknown, y: unknown): unknown {
if (typeof x === 'string' && typeof y === 'string') {
return 100;
}
if (typeof x === 'number' && typeof y === 'number') {
return x + y
}
throw new Error('invalid arguments passed');
}
ΠΠ°Π»Π΅Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ, ΡΡΠΎ const Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΠΏ string, Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΡΠ»ΠΎ.
const str = add("Hello", "World!");
const num = add(10, 20);
Β
ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π»ΠΈΡΠ½ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ
Π’ΠΈΠΏΠΈΠ·ΠΈΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² ΡΠΈΠΏΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ. ΠΠ΅Π΄Ρ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π΄ΡΡΠ³ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
ΠΠ΄Π½Π°ΠΊΠΎ Π² typescript Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΈΡΡ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ:
type Func = () => {
id: string;
};
const func: Func = () => {
return {
id: "123",
name: "Hello!",
};
};
ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ formatAmountParams, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Π² ΡΡΠ½ΠΊΡΠΈΡ formatAmount. ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
type FormatAmount = {
currencySymbol?: string,
value: number
}
const formatAmount = ({ currencySymbol = '$', value }: FormatAmount) => {
return `${currencySymbol} ${value}`;
}
const formatAmountParams = {
currencySymbol: 'USD',
value: 10,
anotherValue: 20
}
ΠΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°:Β
formatAmount(formatAmountParams);
ΠΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ Ρ Π»ΠΈΡΠ½ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ.
formatAmount({ currencySymbol: '', value: 10, anotherValue: 12 });
ΠΠΎΠΆΠ΅ΠΌ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, Π΅ΡΠ»ΠΈ Π·Π°Ρ ΠΎΡΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ currencySymbol Π½Π° currencySign.
Π‘Π½Π°ΡΠ°Π»Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π² ΡΠΈΠΏΠ΅, Π·Π°ΡΠ΅ΠΌ typescript ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅Ρ, ΡΡΠΎ Π½Π°Π΄ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠ»ΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Ρ Β currencySymbol Π½Π° currencySign.
type FormatAmount = {
currencySign?: string,
value: number
}
const formatAmount = ({ currencySign = '$', value }: FormatAmount) => {
return `${currencySign} ${value}`;
}
const formatAmountParams = {
currencySymbol: 'USD',
value: 10
}
formatAmount(formatAmountParams);
ΠΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρ β ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΠΏΡΠΎΡΠ΅Π» Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠΎ Π² formatAmountParams ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΡΠ°ΡΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ currencySymbol ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° 'USD 10' ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ $10'.Β
ΠΠΎΡΠ΅ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Object.keys
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ obj. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Object.keys ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ² Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΏΡΠΎΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΡΠ»ΠΈ Π² ΡΠΈΠΊΠ»Π΅ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΠΊΠ»ΡΡΡ, typescript ΡΠΊΠ°ΠΆΠ΅Ρ, ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠΈΠΉ ΡΠΈΠΏ 'string' Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ° Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° obj.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ β ΡΠΊΠ°ΡΡΠΎΠ²Π°ΡΡ ΡΠΈΠΏ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ as. ΠΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π²ΡΡΡΠ½ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ. ΠΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ [key] Π±ΡΠ» Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ, Π° ΠΊΠ»ΡΡΠΎΠΌ, ΠΈ ΡΠ²Π½ΠΎ ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ.
const obj = {a: 1, b: 2}
Object.keys(obj).forEach((key) => {
console.log(obj[key])
console.log(key as keyof typeof obj)
});
Β
TypeScript ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΈΠΏ UserMetadata, ΠΊΠ°ΠΊ Map ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠΎΠ·Π΄Π°ΡΠΌ cache ΠΈ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»ΡΡΡ 'foo' Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° get. ΠΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ.
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ cacheCopy Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ cache. Π ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ get. Typescript Π½Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠ΅Ρ, ΡΡΠΎ ΡΡΠΎ‑ΡΠΎ Π½Π΅ ΡΠ°ΠΊ, Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Π° get.
type Metadata = {};
type UserMetadata = Map<string, Metadata>;
const cache: UserMetadata = new Map();
console.log(cache.get('foo'));
const cacheCopy: UserMetadata = { ...cache };
console.log(cacheCopy.get('foo'));
Β
ΠΠ΅ΡΠΆ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΡΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΌΠ΅ΡΠΆΠΈΡΡΡΡ. ΠΡΠ»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π±ΡΠ΄ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ, ΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π°Π·Π½Π°ΡΠΈΠΌ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ· Π²ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ.
interface User {
id: number;
}
interface User {
name: string;
}
// Error: Property 'id' is missing in type '{ name: string; }' but required in type 'User', because User interfaces merged
const user: User = {
name: 'bar',
}
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΡΠ°ΠΌΠΎΠΌ typescript, ΠΎΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠ΅ΡΠΆΠ°ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ comment, ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΆ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ comment ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² lib.dom.d.ts.
interface Comment {
id: number;
text: string;
}
// Error: Type '{ id: number; text: string; }' is missing the following properties from type 'Comment': data, length, ownerDocument, appendData, and 59 more.
const comment: Comment = {
id: 5,
text: "good video!",
};
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅
ΠΡΠ»ΠΈ Π²Π°ΠΌ Ρ ΠΎΡΠ΅ΡΡΡ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅, Π½ΠΎ Π½Π΅ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΡΠ²Π°ΡΡ ΡΡΠ°ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ»ΠΈΠΊΠΎΠ² Π½Π° youtube: