현재까지 적용한 (craco, typescript, firebase, .. 등) 것들을 배포한 후, 정상작동하는지 확인 후, TypeScript 작성 방법을 학습했다.
🟥 에러 발생 :
[Craco-Alias Error] Cannot parse tsconfig.paths.json. Please validate it on https://jsonformatter.curiousconcept.com.
-> 해당 소스코드 끝의 컴마를 제거 후 다시 빌드 -> 성공
-> firebase deploy -> 적용 성공
🟥 'practice.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module. TS1208
-> tsconfig.json에 설정된 isolatedModules 설정은 모든 소스코드 파일을 모듈화시킨다.
모듈화 시키기 위해서는 소스코드 파일에서 import 또는 export 를 사용해야 하며, 해당 사항이 적용되어있지 않으면 에러를 출력한다.
-> practice.ts 하단에 export {}를 넣어서 에러를 제거했다.
interface Developer {
name: string;
age?: number; //물음표-> 설정을 해도, 안해도 되는 값
skills: string[];
}
const expert: Developer = {
name: '김개발',
skills: ['javascript', 'react']
};
type Person = {
name: string;
age?: number;
};
type Developer = Person & {
skills: string[];
};
const person: Person = {
name: '김사람'
};
const expert: Developer = {
name: '김개발',
skills: ['javascript', 'react']
};
type People = Person[];
const people: People = [person, expert];
type Color = 'red' | 'orange' | 'yellow';
const color: Color = 'red';
const colors: Color[] = ['red', 'orange'];
function merge<A, B>(a: A, b: B): A & B {
return {
...a,
...b
};
}
const merged = merge({ foo: 1 }, { bar: 1 });
function wrap<T>(param: T) {
return {
param
}
}
const wrapped = wrap(10);
interface Items<T> {
list: T[];
}
const items: Items<string> = {
list: ['a', 'b', 'c']
};
type Items<T> = {
list: T[];
};
const items: Items<string> = {
list: ['a', 'b', 'c']
};
class Queue<T> {
list: T[] = [];
get length() {
return this.list.length;
}
enqueue(item: T) {
this.list.push(item);
}
dequeue() {
return this.list.shift();
}
}
const queue = new Queue<number>();
queue.enqueue(0);
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);