
1.Primitive and Object
{
const num: number = -6;
const str: string = 'hello';
const boal: boolean = false;
let name: undefined;
let age: number | undefined;
age = undefined;
age = 1;
function find(): number | undefined {
return undefined;
}
let person: null;
let person2: string | null;
let notSure: unknown = 0;
notSure = 'he';
notSure = true;
let anything: any = 0;
anything = 'hello';
function print(): void {
console.log('hello');
return;
}
let unusable: void = undefined;
function throwError(message: string): never {
throw new Error(message);
while (true) {}
}
let neverEnding: never;
let obj: object;
function acceptSomeObject(obj: object) {}
acceptSomeObject({ name: 'ellie' });
acceptSomeObject({ animal: 'dog' });
}
2. Functions
{
function jsAdd(num1, num2) {
return num1 + num2;
}
function add(num1: number, num2: number): number {
return num1 + num2;
}
function jsFetchNum(id) {
return new Promise((resolve, reject) => {
resolve(100);
});
}
function fetchNum(id: string): Promise<number> {
return new Promise((resolve, reject) => {
resolve(100);
});
}
function printName(firstName: string, lastName?: string) {
console.log(firstName);
console.log(lastName);
}
printName('Steve', 'Jobs');
printName('Ellie');
printName('Anna');
function printMessage(message: string = 'default message') {
console.log(message);
}
printMessage();
function addNumbers(...numbers: number[]): number {
return numbers.reduce((a, b) => a + b);
}
console.log(addNumbers(1, 2));
console.log(addNumbers(1, 2, 3, 4));
console.log(addNumbers(1, 2, 3, 4, 5, 0));
}
3. Array and Alias
{
const fruits: string[] = ['🍅', '🍌'];
const scroes: Array<number> = [1, 3, 4];
function printArray(fruits: readonly string[]) {}
let student: [string, number];
student = ['name', 123];
student[0];
student[1];
const [name, age] = student;
}
{
type Text = string;
const name: Text = 'ellie';
const address: Text = 'korea';
type Num = number;
type Student = {
name: string;
age: number;
};
const student: Student = {
name: 'ellie',
age: 12,
};
type Name = 'name';
let ellieName: Name;
ellieName = 'name';
type JSON = 'json';
const json: JSON = 'json';
type Boal = true;
}
4. Union and Discriminated
{
type Direction = 'left' | 'right' | 'up' | 'down';
function move(direction: Direction) {
console.log(direction);
}
move('down');
type TileSize = 8 | 16 | 32;
const tile: TileSize = 16;
type SuccessState = {
response: {
body: string;
};
};
type FailState = {
reason: string;
};
type LoginState = SuccessState | FailState;
function login(): LoginState {
return {
response: {
body: 'logged in!',
},
};
}
function printLoginState(state: LoginState) {
if ('response' in state) {
console.log(`🎉 ${state.response.body}`);
} else {
console.log(`😭 ${state.reason}`);
}
}
}
{
type SuccessState = {
result: 'success';
response: {
body: string;
};
};
type FailState = {
result: 'fail';
reason: string;
};
type LoginState = SuccessState | FailState;
function login(): LoginState {
return {
result: 'success',
response: {
body: 'logged in!',
},
};
}
function printLoginState(state: LoginState) {
if (state.result === 'success') {
console.log(`🎉 ${state.response.body}`);
} else {
console.log(`😭 ${state.reason}`);
}
}
}
5.Intersection and Enum
{
type Student = {
name: string;
score: number;
};
type Worker = {
empolyeeId: number;
work: () => void;
};
function internWork(person: Student & Worker) {
console.log(person.name, person.empolyeeId, person.work());
}
internWork({
name: 'ellie',
score: 1,
empolyeeId: 123,
work: () => {},
});
}
{
const MAX_NUM = 6;
const MAX_STUDENTS_PER_CLASS = 10;
const MONDAY = 0;
const TUESDAY = 1;
const WEDNESDAY = 2;
const DAYS_ENUM = Object.freeze({ MONDAY: 0, TUESDAY: 1, WEDNESDAY: 2 });
const dayOfToday = DAYS_ENUM.MONDAY;
type DaysOfWeek = 'Monday' | 'Tuesday' | 'Wednesday';
enum Days {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
}
console.log(Days.Monday);
let day: Days = Days.Saturday;
day = Days.Tuesday;
day = 10;
console.log(day);
let dayOfweek: DaysOfWeek = 'Monday';
dayOfweek = 'Wednesday';
}
6. Interface
let text = 'hello';
function print(message = 'hello') {
console.log(message);
}
print('hello');
function add(x: number, y: number): number {
return x + y;
}
const result = add(1, 2);
7. Assertion
{
function jsStrFunc(): any {
return 2;
}
const result = jsStrFunc();
console.log((result as string).length);
console.log((<string>result).length);
const wrong: any = 5;
console.log((wrong as Array<number>).push(1));
function findNumbers(): number[] | undefined {
return undefined;
}
const numbers = findNumbers()!;
numbers.push(2);
const button = document.querySelector('class')!;
}