Chaining
속성의 타입을 단언해주면 문제를 해결하기 쉽지만, 더 간단하게 선택적 체이닝연산자로 가자
obj?.prop;
obj?.[expr];
arr?.[index];
func?.(args);
// Error - TS2532: Object is possibly 'undefined'.
function toString(str: string | undefined) {
return str.toString();
}
// Type Assertion
function toString(str: string | undefined) {
return (str as string).toString();
}
// Optional Chaining
function toString(str: string | undefined) {
return str?.toString();
}
// Before
if (foo && foo.bar && foo.bar.baz) {}
// After-ish
if (foo?.bar?.baz) {}