ํ์
์ต์ ๋ ํ๋ผ๋ฏธํฐ
functoin log(a: string. b?: string) {
}
log('hello');
log('hello', 'world');
์ธํฐํ์ด์ค
์ธํฐํ์ด์ค ์ธ๋ฑ์ฑ ์ ์
interface StringArray {
//์ธ๋ฑ์ค์ ๋ค์ด์ค๋๊ฑด number, ๊ทธ ๊ฐ์ string
[index: number] : string;
}
var arr : StringArray = ['a', 'b', 'c']
arr[1] = 'd';
์ธํฐํ์ด์ค ๋์ ๋๋ฆฌ ํจํด
interface StringRegexDictionary {
//์ผ์ชฝ์ ๋ค์ด์ค๋ ๊ฐ์ฒด์ ์ด๋ฆ์ key๋ก ์ ํ๊ณ , stringํ์์ผ๋ก ์ ํ / ์ค๋ฅธ์ชฝ์ ์๋๊ฑด ์ ๊ท์ ํ์์ผ๋ก
[key: string] : RegExp;
}
var obj : StringRegexDictionary = {
sth: /abc/,
}
์ด๋ฐ์์ผ๋ก ํด๋ ๋์ ์ฅ์ ์,
Object.keys(obj).forEach((value)=> {})
//์ด๋ฐ์์ผ๋ก ๋ ๋, ๋ญ value์ ํ์
์ string์ผ๋ก ๊ณ ์ ํด๋์์๋ค => ์ถ๋ก
์ธํฐํ์ด์ค ํ์ฅ(์์)
interface Person {
name: string;
age: number;
}
/* interface Developer {
name: string;
age: number;
language: string;
} */
interface Developer extends Person {
language: string;
}
var me: Developer = {
language: 'ts',
age: 100,
name: '9yu'
}
ํ์ ๋ณ์นญ
type Mystring = string;
var str: MyString = 'hello';
type Person = {
name: string;
age: number;
}
ํ์ ๋ณ์นญ๊ณผ ์ธํฐํ์ด์ค์ ์ฐจ์ด์
ํ์ ๋ณ์นญ์ ์๋ก์ด ํ์ ์ ํ๋ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ, ์ ์ํ ํ์ ์ ๋ํด ์ด๋ฆ์ ๋ถ์ฌํ๋๊ฒ.
→ ํ์ ์ ํ์ฅ์ด ๋์ง ์์.
์ ๋์จ ํ์
function logMessage(value: string | number) {
console.log(value);
}
logMessage('hello');
logMessage(100);
์ด๋ฐ ์์ผ๋ก ํ์ ๊ฐ๋๋ฅผ ํ ์ ์์
function logMessage(value: string | number) {
if (typeof value === 'number') {
value.toLocaleString();
}
if (typeof value === 'string') {
value.toString();
}
throw new TypeError('์๋น
');
}
ํน์ง
interface Developer {
name: string;
sill: string;
}
interface Person {
name: string;
age: number;
}
function askSomeone(someone: Develooper | Person) {
someone.???
// ๋๊ฐ์ง ์ธํฐํ์ด์ค๋ฅผ ์ ๋์จ ํ์
์ผ๋ก ์ฌ์ฉํ ๋๋, ๊ณตํต๋ ์์ฑ๋ง ์ฌ์ฉํ ์ ์๋ค.
// name๋ง ์ฌ์ฉํ ์ ์์ : ์๋ฌ ๋ฐฉ์ง -> ํ์
๊ฐ๋๋ฅผ ์ฌ์ฉํ์
}
์ธํฐ์น์ ํ์
function askSomeone(someone: Developer & Person) {
someone.name;
someone.skill;
someone.age;
}
& : developer์ person์ด ๊ฐ๊ณ ์๋ ์์ฑ๋ค์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์
์ ๋์จ ํ์ ๊ณผ ์ธํฐ์น์ ํ์ ์ฐจ์ด์
//์ธํฐ์น์
ํ์
์ ์ฌ์ฉํ์๋,
askSomeone({ name: '๋๋ฒจ๋กํผ', skill: '์น ๊ฐ๋ฐ'}) // -> ์ค๋ฅ๋จ
//name, skill, age 3๊ฐ ๋ค ๋๊ฒจ์ผ ์ค๋ฅ ์๋จ
//์ ๋์จ ํ์
์ฌ์ฉ ์ : ์ด๋ ๊ฒ ๊ฐ์ ํจ์์ ๋ค๋ฅธ ์ธ์๋ก ๋๊ฒจ์ผ ํ ๋
askSomeone({ name: '๋๋ฒจ๋กํผ', skill: '์น ๊ฐ๋ฐ'})
askSomeone({ name: '๋๋ฒจ๋กํผ', age: 100})
์ด๋
// ์ด๋ : ํน์ ๊ฐ๋ค์ ์งํฉ
// ๊ธฐ๋ณธ๊ฐ ์ซ์ํ ์ด๋: ํด๋น๊ฐ๋ค์ ์ธ๋ฑ์ค๊ฐ
enum Shoes {
Nike,
Adidas
}
/* enum Shoes {
// ์ด๋ฐ์์ผ๋ก ๋ฌธ์๋ก ์ด๊ธฐํ ๊ฐ๋ฅ
Nike = '๋์ดํค',
Adidas = '์๋๋ค์ค'
} */
var myShoes = Shoes.Nike;
console.log(myShoes) // 0
ํ์ฉ
enum Answer {
Yes = 'Y',
No = 'N',
}
/* function askQuestion(answer: string) {
if (answer === 'yes'){
console.log('์ ๋ต์
๋๋ค')
}
if (answer === 'no') {
console.log('์ค๋ต์
๋๋ค')
}
} */
function askQuestion(answer: Answer) {
if (answer === Answer.Yes){
console.log('์ ๋ต์
๋๋ค')
}
if (answer === Answer.No) {
console.log('์ค๋ต์
๋๋ค')
}
}
askQuestion(Answer.Yes);
์ด๋ฐ์์ผ๋ก enum์์ ์ ๊ณตํ๋ ๊ฐ๋ง ๋๊ธธ์์๋๋ก ์ค์ ํ ์ ์์ (๋๋กญ๋ค์ด ๋ฑ์ ๋ชฉ๋ก์์ ํ์ํ ๊ฐ๋ค)
ํด๋์ค
class Person {
// ์ด๋ฐ์์ผ๋ก ํ์
์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ํตํด ์ถ๊ฐ ์ค์ ๊ฐ๋ฅ
private name: string;
public age: number;
readonlu log: string;
constructor(name: string, age: number) {
console.log('์์ฑ๋์์ต๋๋ค');
this.name = name;
this.age = age;
}
}
var seho = new Person('9yu', 30);