'속성이 '없음' 유형에 없습니다.'
이것은 #40796374와 비슷하지만 인터페이스를 사용하고 있는 동안 타입에 관한 것입니다.
아래 코드 지정:
interface Foo {
name: string;
}
function go() {
let instance: Foo | null = null;
let mutator = () => {
instance = {
name: 'string'
};
};
mutator();
if (instance == null) {
console.log('Instance is null or undefined');
} else {
console.log(instance.name);
}
}
never 유형에 Property 'name'이 존재하지 않습니다.라는 오류가 발생하였습니다.
나는 어떻게 인스턴스가 '절대'가 될 수 있는지 이해할 수 없다.누가 좀 밝혀줄 수 있어요?
컴포넌트를 반응으로 쓰면 됩니다.FC 및 useState()를 사용하여
이렇게 쓰면 도움이 될 것 같아요.
const [arr, setArr] = useState<any[]>([])
같은 에러가 발생하여 점 표기법을 괄호 표기법으로 대체하여 억제했습니다.
예:
obj.name -> obj['name']
「 」를 에,instance
로로 합니다.null
. 이 될 수 null
은 절대 하지 않는 하고 있습니다.instance
합니다.never
다른 블록에 있습니다.
null
기타 방법으로 입수할 수 있습니다(예:let instance: Foo | null = getFoo();
,, 음, 다, 다, 다, 다 ) 。instance
되다null
내 및 if 블록 내Foo
하다
문서 입력 안 함:https://www.typescriptlang.org/docs/handbook/basic-types.html#never
편집:
업데이트된 예제의 문제는 실제로 컴파일러에서 해결되지 않은 문제입니다.참조:
https://github.com/Microsoft/TypeScript/issues/11498 https://github.com/Microsoft/TypeScript/issues/12176
이는 이 문제와 유사한 것으로 보입니다.이 문제의 중복으로 콜백 내의 값을 변경할 때 "Property does not existing on type "never" 가 잘못되어 있습니다.제어 흐름 분석의 트레이드오프.
그 논의는 꽤 길기 때문에, 적절한 솔루션을 찾을 수 없는 경우는, 다음과 같이 시험해 볼 수 있습니다.
if (instance == null) {
console.log('Instance is null or undefined');
} else {
console.log(instance!.name); // ok now
}
저 같은 경우에는 어레이를 시작할 때요.사용:
selectedActors: any = [];
그래서 처음에는 '다이나믹'하게 만들죠.
「키핑」을 해 .any
★★★★★★★★★★★★★★★★★」any[]
과 같은
getOptionLabel={(option: any) => option!.name}
<Autocomplete
options={tests}
getOptionLabel={(option: any) => option!.name}
....
/>
다음 코드가 작동합니다.
const [disc, setDisc] = useState<any[]>([]);
지금까지 제가 본 것은 다음과 같습니다.useState()에 전달할 유형을 지정하지 않으면 type never가 됩니다.any[]를 사용하면 요청 시 데이터를 전달할 수 있습니다.
리액트를 useRef
을 걸다TypeScript
를 사용하는 「」를 사용합니다.any
을 사용하다
const ref = useRef<HTMLInputElement>(null);
타이프 스크립트 개발자의 경우...React.useRef() 훅을 사용하는 경우 null을 미리 할당하는 대신 변수 유형 any를 선언하고 사용합니다.
예:
const initialRef: any = null;
const ref = React.useRef(initialRef);
component.ts 파일에서 어레이를 다음과 같이 선언합니다.
public arrayName = ([] as any[]);
앵글을 위해 저와 함께 일했던
변수의 유형을 정의하는 것을 잊어버렸을 때 이 문제가 발생했습니다.
제 경우(타자기본을 사용하고 있습니다) 나중에 데이터가 할당되는 가짜 데이터로 응답을 시뮬레이션하려고 했습니다.첫 번째 시도는 다음과 같습니다.
let response = {status: 200, data: []};
그리고 나중에 가짜 데이터를 할당하면 "never []"를 입력할 수 없다고 불평하기 시작합니다.그리고 나는 다음과 같이 반응을 정의했고 그것은 그것을 받아들였다.
let dataArr: MyClass[] = [];
let response = {status: 200, data: dataArr};
가짜 데이터 할당:
response.data = fakeData;
유형을 선언하지 않은 경우 useState:
type이 never라고 가정하고 있기 때문에, 「property does not exist on type 'never'」라고 하는 에러가 표시됩니다.
다음과 같이 입력할 수 있습니다.
const [datalist, setDataList] = useState<Array<Object>>([]);
제 경우 변수를 입력하지 않았기 때문에 발생한 것입니다.
그래서 검색 인터페이스를 만들었습니다.
export interface Search {
term: string;
...
}
나는 그것을 바꿨다
searchList = [];
그 때문에 효과가 있었다
searchList: Search[];
나는 ?와 문제가 있었다!
이 작품은 나에게 효과가 있었다.
if (ref != null){
if (ref.current != null)
ref.current.appendChild(child);
}
나는 다음과 같은 표현으로 이 문제를 발견했다.
const node = item ? <a href={item.link}>{item.name}</a> : item.name
그리고 나머지 부분은item.name
말했습니다Property 'name' does not exist on type 'never'.
음, 이것은 만약 안에 아무것도 없다면item
object - a가 있을 수 없습니다.name
재산도 마찬가지입니다.
따라서 이 경고는 기본적으로 불가능한 것을 선언할 때 발생합니다(그래서 이 경고는never
)
처음에는 값이 비어 있을 수 있습니다.이 경우 예를 들어 보겠습니다.
val = data.notificationId --> 여기서 오류가 발생합니다.따라서 let val = data & data. notification 이라고 간단히 쓸 수 있습니다.아이디
이 방법으로 UseState를 사용하면 문제가 없습니다.
const [data, setData] = useState<any>([]);
Javascript의 경우 기본적으로 모든 데이터 유형이 Any이므로 직접 작동하며, Typescript에는 해당되지 않으므로 언어를 알려야 합니다.
다음과 같이 입력할 수 있습니다.
const [data, setData] = useState <Array>([]);
언급URL : https://stackoverflow.com/questions/44147937/property-does-not-exist-on-type-never
'itsource' 카테고리의 다른 글
Amazon Cloudwatch Logs Insights with JSON 필드 (0) | 2023.03.13 |
---|---|
Angularjs의 앵커 링크? (0) | 2023.03.13 |
React에서 빈 dom 요소를 정의하는 올바른 방법 (0) | 2023.03.13 |
MongoDB 및 Mongoose에서 전체 텍스트 검색을 수행하는 가장 좋은 방법 (0) | 2023.03.13 |
MongoDB 컬렉션 하이픈으로 연결된 이름 (0) | 2023.03.13 |