let name: string = 'John';
let greeting: string = `Hello, ${name}`;
let multiline: string = `
第一行
第二行
`;
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
let big: number = 1_000_000;
let isDone: boolean = false;
let isActive: boolean = true;
let n: null = null;
let u: undefined = undefined;
let name: string = null;
let age: number = undefined;
let name: string = null;
let age: number | undefined = undefined;
let numbers: number[] = [1, 2, 3, 4, 5];
let strings: string[] = ['a', 'b', 'c'];
let nums: Array<number> = [1, 2, 3];
let strs: Array<string> = ['a', 'b'];
let arr: readonly number[] = [1, 2, 3];
let readonlyArr: ReadonlyArray<string> = ['a', 'b'];
let matrix: number[][] = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
let cube: number[][][] = [
[[1, 2], [3, 4]],
[[5, 6], [7, 8]]
];
let tuple: [string, number] = ['John', 25];
let point: [number, number] = [10, 20];
let name = tuple[0];
let age = tuple[1];
let tuple: [string, number?] = ['John'];
tuple = ['John', 25];
let tuple: [string, ...number[]] = ['John', 1, 2, 3, 4];
let mixed: [boolean, ...string[], number] = [true, 'a', 'b', 'c', 100];
let tuple: readonly [string, number] = ['John', 25];
let tuple: [string, number, boolean] = ['John', 25, true];
let [name, age, isActive] = tuple;
enum Direction {
Up,
Down,
Left,
Right
}
let dir: Direction = Direction.Up;
console.log(dir);
enum Status {
Pending = 1,
Success,
Error
}
enum HttpCode {
OK = 200,
NotFound = 404,
ServerError = 500
}
enum Direction {
Up = 'UP',
Down = 'DOWN',
Left = 'LEFT',
Right = 'RIGHT'
}
let dir: Direction = Direction.Up;
console.log(dir);
enum Mixed {
No = 0,
Yes = 'YES'
}
const enum Color {
Red,
Green,
Blue
}
let color = Color.Red;
enum FileAccess {
None,
Read = 1 << 1,
Write = 1 << 2,
ReadWrite = Read | Write
}
let value: any = 'hello';
value = 123;
value = true;
value = {};
value = [];
value.foo();
value.bar.baz();
let list: any[] = [1, 'hello', true, {}];
let value: unknown = 'hello';
if (typeof value === 'string') {
value.toUpperCase();
}
(value as string).toUpperCase();
function log(message: string): void {
console.log(message);
}
let unusable: void = undefined;
function error(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {}
}
function check(value: string | number) {
if (typeof value === 'string') {
return value.toUpperCase();
} else if (typeof value === 'number') {
return value.toFixed(2);
}
const exhaustiveCheck: never = value;
return exhaustiveCheck;
}
let obj: object = {};
obj = [];
obj = () => {};
let user: { name: string; age: number } = {
name: 'John',
age: 25
};
let sym1: symbol = Symbol('key');
let sym2: symbol = Symbol('key');
console.log(sym1 === sym2);
let obj = {
[sym1]: 'value'
};
let big1: bigint = 100n;
let big2: bigint = BigInt(100);
let sum: bigint = big1 + big2;
let num = 123;
let str = 'hello';
let bool = true;
let arr = [1, 2, 3];
let mixed = [1, 'hello', true];
window.onmousedown = function(event) {
console.log(event.button);
};
let value: unknown = 'hello';
let length: number = (value as string).length;
let len: number = (<string>value).length;
let num = (value as unknown as number);
function getName(): string | null {
return 'John';
}
let name = getName();
let upper = name!.toUpperCase();
let direction: 'left' | 'right' | 'up' | 'down';
direction = 'left';
let dice: 1 | 2 | 3 | 4 | 5 | 6;
let success: true = true;
type EventName = `on${Capitalize<string>}`;
let event: EventName = 'onClick';