'{}' 유형을 '{title: string; }' 유형에 할당할 수 없습니다.
아래 TypeScript 코드에 대한 아래 오류가 발생했습니다.
'{}' 유형을 '{title: string; text: string; }' 유형에 할당할 수 없습니다.'{}' 유형에 'title' 속성이 없습니다.
아래와 같이 "기사"를 선언하므로,
article: { title: string, text: string } = {};
그 이유와 해결 방법은 무엇입니까?감사합니다!
import { Component } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'article-editor',
template: `
<p>Title: <input [formControl]="titleControl"></p>
<p>Text: <input [formControl]="textControl"></p>
<p><button (click)="saveArticle()">Save</button></p>
<hr />
<p>Preview:</p>
<div style="border:1px solid #999;margin:50px;">
<h1>{{article.title}}</h1>
<p>{{article.text}}</p>
</div>
`
})
export class ArticleEditorComponent {
article: { title: string, text: string } = {};
titleControl: FormControl = new FormControl(null, Validators.required);
textControl: FormControl = new FormControl(null, Validators.required);
articleFormGroup: FormGroup = new FormGroup({
title: this.titleControl,
text: this.textControl
});
saveArticle() {
if (this.articleFormGroup.valid) {
this.article = this.articleFormGroup.value;
} else {
console.log('Missing field(s)!');
}
}
}
당신은 컴파일러에게 말했습니다.article
유형의{ title: string, text: string }
그러나 빈 개체를 할당합니다({}
) 둘 다 부족합니다.title
그리고.text
그래서 컴파일러는 불평합니다.
형식 어설션을 사용하여 컴파일러에 정상임을 알릴 수 있습니다.
let article: { title: string, text: string } = {} as { title: string, text: string };
이를 유형 별칭에 넣을 수도 있습니다.
type MyType = { title: string, text: string };
let article: MyType = {} as MyType;
유형 어설션을 사용하면 다음과 같은 작업을 쉽게 수행할 수 있습니다.
let article = {} as MyType;
그 이유는 아주 간단하게 당신이 주장하기 때문입니다.article
했어야 했습니다title
그리고.text
필드, 그러나{}
Doesn't.문제를 해결하는 방법은 표시할 내용에 따라 다릅니다.article
에는 초기 값이 있지만 가장 간단한 해결 방법은 필드를 선택적으로 설정하는 것입니다.{ title?: string, text?: string }
.
지나가는 사람들을 위해 세 번째 옵션을 추가하겠습니다. 제정신인 기본값을 추가합니다.
const article: { title: string, text: string } = {
title: "default title",
text: "default text"
};
여기에는 해당되지 않을 수도 있지만 일반적으로 개체를 초기화하여 유형을 충족하고 가능한 한 엄격한 유형을 갖는 것이 좋습니다.
솔루션이 언급되었지만 위에서 설명하지 않았기 때문에 다음 작업을 수행할 수 있습니다.
article: { title?: string, text?: string } = {};
빈 개체가 허용되는 경우 속성은 선택 사항입니다.항상 이러한 속성을 포함하는 개체에 대해 계획하고 구조를 정의하려는 경우 다음과 같이 선언합니다.
article: { title: string, text: string };
코드에서 개체 값이 정의되기 전에 개체를 사용할 수 있는 상황은 없습니다.
언급URL : https://stackoverflow.com/questions/42091602/type-is-not-assignable-to-type-title-string-text-string
'programing' 카테고리의 다른 글
Mongo 클라이언트가 밑줄이 앞에 붙은 컬렉션에 액세스할 수 없음 (0) | 2023.06.28 |
---|---|
각 지점 및 해당 지점의 마지막 개정 날짜를 Git로 나열 (0) | 2023.06.28 |
Git 하위 모듈 이름 바꾸기 (0) | 2023.06.28 |
파이썬의 사이트 패키지 디렉터리는 무엇입니까? (0) | 2023.06.28 |
Mongoose findOneAndUpdateUspert _id null? (0) | 2023.06.28 |