Typescript : 의미? 그리고! 클래스 속성에서

Aug 17 2020
@Column({ name: 'device_kind', type: 'int2', nullable: false })
deviceKind?: number;

누구든지이 코드를 설명 할 수 있습니까? 왜 그들이 '?'를 추가했는지 이해하지 못했습니다. 표. 그리고 그들 중 일부는 '!' 물음표 대신. 무슨 뜻입니까?

답변

2 Evert Aug 18 2020 at 01:49

이것은 TypeORM이 아니라 실제로 Typescript 질문입니다.

다음과 같이 속성을 정의 할 때 :

type Foo = {
  prop1?: number
}

당신이 말하는 prop1선택 사항입니다.

속성 앞에 속성이 있으면 !생성자에서 초기화하지 않았다는 경고를하지 않도록 Typescript에 지시하는 것입니다 (일반적으로 엄격 모드에서 불평 할 것임).

예:

class Foo {
  // Typescript does not complain about `a` because we set it in the constructor
  public a: number;

  // Typescript will complain about `b` because we forgot it.
  public b: number;

  // Typescript will not complain about `c` because we told it not to.
  public c!: number;

  // Typescript will not complain about `d` because it's optional and is
  // allowed to be undefined.
  public d?: number;

  constructor() {
    this.a = 5;
  }

}

c!위 클래스 의 경우는 Typescript에게 "내가하는 일을 알고 있습니다. 생성자가 아닌 어딘가에 이것을 설정하고 있다는 것을 알고 있습니다. 불평하지 마십시오"라고 말하는 방법 이라는 점에 유의해야합니다 .

이것은 동일하지 않 d?이 단지 의미하기 때문에, 경우에 d허용이 될 number undefined .