-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.ts
94 lines (68 loc) · 1.85 KB
/
main.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Learn Index Signatures and keyof Assertions
// Index Signatures
// interface TransactionObj {
// readonly [index: string]: number
// }
interface TransactionObj {
readonly [index: string]: number
Pizza: number,
Books: number,
Job: number
}
const todaysTransactions: TransactionObj = {
Pizza: -10,
Books: -5,
Job: 50,
Adrian: 42
}
console.log(todaysTransactions.Pizza);
console.log(todaysTransactions['Pizza'])
let prop: string = 'Pizza'
console.log(todaysTransactions[prop]);
const todayNet = (transactions: TransactionObj): number => {
let total = 0
for (const transaction in transactions){
total += transactions[transaction]
}
return total
}
console.log(todayNet(todaysTransactions));
// todaysTransactions.Pizza = 40
console.log(todaysTransactions['Adrian']);
///////////////////////////////////////
interface Student{
[key: string]: string | number | number[] | undefined,
name: string,
GPA: number,
classes?: number[]
}
const student: Student = {
name: 'Adriana',
GPA: 3.8,
classes: [100, 200]
}
// console.log(student.test);
for ( const key in student){
console.log(`${key}: ${student[key as keyof Student]}`);
}
Object.keys(student).map(key => {
console.log(student[key as keyof typeof student]);
})
const logStudentKey = ( student: Student, key: keyof Student): void => {
console.log(`Student ${key}: ${student[key]}`);
}
logStudentKey(student, 'name')
///////////////////////////////////////
// interface Incomes {
// [key: string | number]: number
// }
type Streams = 'salary' | 'bonus' | 'sidehustle'
type Incomes = Record<Streams, number | string>
const monthlyIncomes: Incomes = {
salary: 500,
bonus: 100,
sidehustle: 250
}
for(const revenue in monthlyIncomes){
console.log(monthlyIncomes[revenue as keyof Incomes]);
}