유형 스크립트의 유형 오류
여기 내 문제가 있습니다.다음 오류가 발생했습니다.
Uncaught TypeError: 개체 프로토타입은 개체이거나 null일 수 있습니다. 정의되지 않았습니다.
export abstract class AbstractLogicExpression {
protected _logicChildExpressions: AbstractLogicExpression[] = Array();
protected _precedence = 0;
protected _parsed = false;
protected _expressionType = "";
protected rightAssociative = false;
public toDNF() {
for (let i = 0; i < this.logicChildExpressions.length; i++) {
let actualLogicExpression: AbstractLogicExpression = this.logicChildExpressions[i];
if (actualLogicExpression._expressionType == "~") {
let logicConjunction = actualLogicExpression.logicChildExpressions[0];
let var1 = logicConjunction.logicChildExpressions[0];
let var2 = logicConjunction.logicChildExpressions[1];
if (logicConjunction._expressionType == "*") {
actualLogicExpression.logicChildExpressions[0] = new LogicOr();
//actualLogicExpression.logicChildExpressions[0].add(new LogicNeg(var1));
//actualLogicExpression.logicChildExpressions[0].add(new LogicNeg(var2));
}
}
}
}
}
주석이 달린 두 줄 앞에 있는 줄 때문에 이 오류가 발생합니다.
actualLogicExpression.logicChildExpressions[0] = new LogicOr();
오류 메시지에 라인 번호가 표시되지 않기 때문에 코멘트 및 코멘트 해제로 테스트했습니다.
누가 내가 뭘 할 수 있는지 알아요?코드가 조금 더 필요하다면요.제가 글을 올릴 수 있어요...
LogicOr의 코드는 https://pastebin.com/T28Zjbtb 입니다.
여기에 순환 종속성에 대한 실제 문제는 리소스가 사용되기 전에 로드되지 않은 리소스 중 하나이기 때문입니다.리소스가 잘못 로드된 경우에도 이 오류가 발생합니다.
gulp를 사용하여 컴파일하는 이 예를 생각해 보십시오.
// File Parent.ts
export class Parent {
public prop: string = "prop";
}
//File Child.ts
export class Child extends Parent {
public prop2: string = "prop2";
}
그리고 편집할 수 있는 한 모금.
gulp.task('compile-js', function () {
return gulp.src(['code/Child.js', 'code/Parent.js'])
.pipe(sourcemaps.init())
.pipe(concat('app.bundle.js'))
.pipe(sourcemaps.write())
.pipe(gulp.dest('app/build'));
});
출력 파일 app.bundle.js는 "Uncaught TypeError: Object prototype은 Object 또는 null: defined"로 오류를 표시합니다. 이는 부모 클래스가 로드되기 전에 결과 코드가 먼저 자식 클래스(부모 클래스에 종속성이 있음)의 생성을 실행하기 때문입니다.
만약 당신이 결과 자바스크립트를 본다면 당신은 다음을 얻을 것입니다:
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var Child = /** @class */ (function (_super) {
__extends(Child, _super);
function Child() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.prop2 = "prop2";
return _this;
}
return Child;
}(Parent));
var Parent = /** @class */ (function () {
function Parent() {
this.prop = "prop";
}
return Parent;
}());
이를 실행하면 다음과 같은 이점을 얻을 수 있습니다.
Uncatched TypeError: 개체 프로토타입은 Object이거나 null일 수 있습니다. setPrototypeOf ()에서 정의되지 않았습니다.
이 문제를 해결하려면 gulp 파일의 리소스 순서나 페이지에 대한 Javascript를 준비하거나 로드하는 데 사용하는 방법을 변경하기만 하면 됩니다.
return gulp.src(['code/Parent.js', 'code/Child.js'])
이 문제를 해결할 수 있는 방법은 여러 가지가 있습니다. 이는 문제를 이해하고 문제를 해결하는 데 도움이 되는 예입니다.문제를 해결하기 위한 어떤 방법을 찾든 결국 오류는 실행 시 아직 지시하지 않은 작업을 자바스크립트 엔진에 요청하는 것입니다.
이게 도움이 되길 바래, 건배
다음 행에 오류가 표시됩니다.
realLogicExpression.logicChildExpressions[0] = newLogicOr();
오류 메시지는 다음과 같습니다.
Uncaught TypeError: 개체 프로토타입은 개체이거나 null일 수 있습니다. 정의되지 않았습니다.
클래스와 클래스 작동 방식에 익숙해지면 매우 쉽게 이해할 수 있습니다(https://basarat.gitbooks.io/typescript/docs/classes.html) .
오류는 다음을 의미합니다.new LogicOr
하는 이유는 실하는이 때문입니다.LogicOr
무언가를 확장하는 것입니다.undefined
예: 간한예단:
let Bar;
class Foo extends Bar { } // Uncaught TypeError: Object prototype may only be an Object or null: undefined
더
에서 버그 LogicOr
그리고 그 상속 사슬.
Javascript와할, 여러분에게 이 될 : 을 고친 은 자크스립영위해절망적행인한불이혼것바큼여도, 은에게분러움될이것것만:▁an▁for▁to▁out▁create▁it다니▁is▁what,것▁fixed입▁this▁for는▁souls▁you:▁unfortun▁desperate▁there▁might만▁help드▁with▁theascript▁jav자바을▁have▁enough▁to.index.ts
클래스를 올바른 순서로 내보낸 다음 상대 경로가 아닌 인덱스 파일에서 모든 가져오기를 수행하는 클래스입니다.파일은 다음과 같습니다.
export { default as BasePage } from './BasePage' // abstract class
export { default as ProtectedAppPage } from './ProtectedAppPage' // abstract extending BasePage class
export { default as RegistrationForm } from './registration/forms/RegistrationForm' // abstract class extending ProtectedAppPage
export { default as ForgotPasswordPage } from './authentication/ForgotPasswordPage' // concrete class extending BasePage
export { default as HomeAddressForm } from './registration/forms/HomeAddressForm' // concrete class extending RegistrationForm
export { default as MfaPage } from './authentication/MfaPage' // concrete class extending ProtectedAppPage
이제 수입품을 살펴보도록 하겠습니다.
// before
import HomeAddressForm from './registration/forms/HomeAddressForm'
// after
import HomeAddressForm from './index'
이러한 변화는 저에게 그것을 해결하기에 충분했습니다.
언급URL : https://stackoverflow.com/questions/44421810/typeerror-in-typescript
'programing' 카테고리의 다른 글
Vuejs 및 Vuex 작업 - 상태 코드 422로 요청 실패 (0) | 2023.06.25 |
---|---|
Bson 직렬화사전을 BSON에 직렬화할 때 예외 발생 (0) | 2023.06.25 |
ORA-22905 - Select 문을 사용하여 테이블 유형을 쿼리할 수 있습니다. (0) | 2023.06.25 |
Mac OS X에 애드버타이즈 설정 (0) | 2023.06.25 |
springboot : 핸들러의 사전 핸들에서 오류 상태 코드를 반환하는 방법요격기 (0) | 2023.06.25 |