code

입력된 배열이 비어 있는 초기 상태를 입력하고 초기 상태를 설정합니다.

starcafe 2023. 7. 17. 21:17
반응형

입력된 배열이 비어 있는 초기 상태를 입력하고 초기 상태를 설정합니다.

다음과 같은 스니펫이 있다고 가정합니다.

interface State {
  alarms: Alarm[];
}
export default class Alarms extends React.Component<{}, State> {
  state = {
    alarms: []
  };

제가 설정을 하려고 하니까.alarms: []타이프스크립트는 그것을 좋아하지 않습니다.[] != Alarm[]사용할 수 있음을 발견했습니다.alarms: new Array<Alarm>()빈 유형의 배열을 초기화하는 것입니다. 하지만 저는 이 구문이 별로 마음에 들지 않습니다. 더 쉽고 더 나은 접근법이 있습니까?

문제는 클래스에 필드를 만들 때 컴파일러가 해당 필드를 입력한다는 것입니다(예: 초기화 식에서 명시적 유형 또는 유추된 유형 사용).

필드를 다시 선언하려면 유형을 명시적으로 지정해야 합니다.

export default class Alarms extends React.Component<{}, State> {
    state: Readonly<State> = {
        alarms: []
    };
}

또는 생성자에서 상태를 설정합니다.

export default class Alarms extends React.Component<{}, State> {
    constructor(p: {}) {
        super(p);
        this.state = {
            alarms: []
        };
    }
}

배열을 예상 유형으로 캐스트할 수도 있지만 필드가 많은 경우 컴파일러가 개체 리터럴을 확인하도록 하는 것이 좋습니다.

그럴 것이다

alarms: [] as Alarm[]

Typescript를 위해 일하고 당신을 위해 일합니까?

유형스크립트: 유형스크립트 주조 배열에서 배열을 주조하는 방법에 대한 이 질문을 참조하십시오.

선언:

alarms: Array<Alarm>

초기화 상태:

this.setState({
var1:'',
var2:''
});

나는 위의 선언을 선호합니다.

언급URL : https://stackoverflow.com/questions/51305171/typescript-and-react-setting-initial-state-with-empty-typed-array

반응형