수색…


엄격한 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