1)
const v2 = {
x: 1 as const,
y: 2
}
2)
const v3 = {
x: 1,
y: 2,
} as const;
const el = document.getElementbyId('foo'); // 타입이 HTMLElement | null
if (typeof el === 'object') {
el; // 타입이 HTMLElement | null
}
(string | undefined) [] => string[] 으로 만들고 싶다!
const jacksonn5 = ['Jackie', 'Tito', 'Jermaine', 'Marlon', 'Michael'];
const memebers = ['Janet', 'Michael'].map(
who => jackson5.find(n => n === who)
).filter(who => who !== undefined); // 타입이 (string | undefined)[]
interface State {
pageText: string;
isLoading: boolean;
error?: string;
}
function renderPage(state:State){
if(state.error){
return `Error! Unable to load ${currentPage} : ${state.error}`;
} else if (state.isLoading){
return `Loading ${currentPage}...`;
}
return `<h1>${currentPage}</h1>\n${state.pageText}`
}
async function changePage(state: State, newPage: string){
state.isloading = true;
try {
const response = await fetch(getUrlForPage(newPage));
if(!response.ok){
throw new Error(`Unable to load ${newPage}: ${response.statusText}`);
const text = await response.text();
state.isLoading = false;
state.pageText = text;
}
} catche (e){
state.error = '' + e;
}
}
/**
* 전경색(foreground) 문자열을 반환한다.
* 0 개 또는 1개의 매개변수를 받는다.
* 매개변수가 없을 때는 표준 전경색을 반환한다.
* 매개변수가 있을 때는 특정 페이지의 전경색을 반환한다.
*/
function getForegroundColor(page?:string){
return page === 'login' ? {r: 127, g:127, b:127}: {r:0, g:0, b:0};
}