TypeScript
엄격한 null 검사
수색…
엄격한 null 체크 작동
기본적으로 TypeScript의 모든 유형에서 null
허용합니다.
function getId(x: Element) {
return x.id;
}
getId(null); // TypeScript does not complain, but this is a runtime error.
TypeScript 2.0은 엄격한 Null 검사를 지원합니다. tsc
실행할 때 --strictNullChecks
를 설정하면 (또는 tsconfig.json
에서이 플래그를 설정 한 경우) 유형이 더 이상 null
허용하지 않습니다.
function getId(x: Element) {
return x.id;
}
getId(null); // error: Argument of type 'null' is not assignable to parameter of type 'Element'.
null
값을 명시 적으로 허용해야합니다.
function getId(x: Element|null) {
return x.id; // error TS2531: Object is possibly 'null'.
}
getId(null);
적절한주의가 있으면 코드 유형이 올바르게 검사되고 실행됩니다.
function getId(x: Element|null) {
if (x) {
return x.id; // In this branch, x's type is Element
} else {
return null; // In this branch, x's type is null.
}
}
getId(null);
null이 아닌 어설 션
null 이외의 주장 연산자, !
TypeScript 컴파일러가 자동으로 그 식을 유추 할 수없는 경우식이 null
이거나 undefined
않았다고 주장 할 수 있습니다.
type ListNode = { data: number; next?: ListNode; };
function addNext(node: ListNode) {
if (node.next === undefined) {
node.next = {data: 0};
}
}
function setNextValue(node: ListNode, value: number) {
addNext(node);
// Even though we know `node.next` is defined because we just called `addNext`,
// TypeScript isn't able to infer this in the line of code below:
// node.next.data = value;
// So, we can use the non-null assertion operator, !,
// to assert that node.next isn't undefined and silence the compiler warning
node.next!.data = value;
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow