나는 많이 조사했지만 앵귤러 11 / TS4의 기본 속성에서 무슨 일이 일어 났는지 알 수 없었습니다.
예를 들어 Angular 10 / TS 3에서는 잘 작동했습니다.
export class MyDirective {
@Input() isRange = false;
}
소비자 TS
isRange?: boolean;
소비자 HTML
<div myDirective [isRange]="isRange"></div>
나는 isRange
선택적 속성 으로 설정할 수 있었고 그것은 작동 할 것입니다. 이것은 기본 속성이 실제로 모든 빈 값에 대해 기본값을 사용한다고 가정해야하기 때문에 완벽합니다. 어쨌든 다른 언어에서도 그렇게되는데 ...
그러나 이제 angular 11 / TS4로 마이그레이션 한 후 동일한 코드가 오류를 생성합니다.
오류 TS2322 : 'boolean | undefined '는'boolean '유형에 할당 할 수 없습니다. 'undefined'유형은 'boolean'유형에 할당 할 수 없습니다.
9 [isRange] = "isRange"
입력을 다음과 같이 변경 한 후에 만 오류가 사라집니다.
@Input() isRange?= false;
저는 항상 앵귤러 11 / TS4를 언급합니다. 왜냐하면 이것이 TS 때문이라고 진정으로 생각하지만 조사하는 동안 확신 할 수 없었기 때문입니다.
내 질문은 왜 ?
기본값이있는 속성에 지금이 필요하고 가장 중요한 것은 동일한 방식으로 작동합니까? 예를 들어,을 추가하면 ?를 삽입 ?
하면 기본값이 설정 됩니까?false
undefined
.NET과 같은 중요한 검사를 비활성화하지 않고 이전 (IMO 올바른) 동작으로 돌아가는 방법을 정말 좋아합니다 strictTemplateCheck
. 프로젝트가 빌드 되더라도 (올바른 방법 !
인지는 모르겠지만) TS에 속성에 값이 있어야한다는 것을 알리기 위해 지금도 코드에서 많은 것을 사용해야하기 때문 입니다.
그것이 어디에 있는지 아는 경우 답변 / 댓글에 문서 링크를 추가하십시오.
명확하지 않은 점이 있으면 알려주세요.
감사!
이 동작은 TS v4 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html#class-property-inference-from-constructors 에서 도입되었습니다.
모두 ?
와 !
당신하고 있는지 경우 확인되어 undefined
값이 잘 처리
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다