typescript 프로젝트의 모듈러 구조를 설정하려고합니다. 나는 다른 폴더에있는 모듈을 가질 수 있고 그 모듈에 속한 모든 클래스를 별도의 파일에 포함 할 수 있도록 구조화하려고합니다. 내 모든 페이지에 대한 뷰 모듈 역할을 할 모듈을 작업 중입니다. 이 모듈에는 일반적인 페이지 뷰 기능이 포함 된 baseviewmodel과 내 페이지를 렌더링하기 위해 녹아웃과 함께 사용되는 pageviewmodel이 있습니다.requirejs가있는 typescript 모듈, 모듈을 확장하는 동안 정의되지 않은 프로토 타입
이 같은 모습을 달성하고자하는 구조 :
- ts folder
ViewModule
- BaseViewModel.ts
- PageViewModel.ts (extends BaseViewModel)
- init.ts
이 BaseViewmodel 및 PageviewModel 모두 ViewModule에 속하지만, 별도의 파일입니다.
module ViewModule {
export class BaseViewmodel {
// ....
}
}
module ViewModule {
export class PageViewModel extends BaseViewmodel {
public content: KnockoutObservable<string>;
constructor(ko: KnockoutStatic) {
super(ko);
this.content = this.ko.observable('');
}
}
}
내가 requirejs과 종속성을 내 응용 프로그램을 초기화하고 주입 init.ts를 사용
define(['app/ViewModule/PageViewModel'],
(viewModule: typeof ViewModule.PageViewModel) => {
console.log(viewModule);
});
내가 앱 '으로 pageviewmodel 모듈을로드하려고 볼 수 있듯이/ViewModule/PageViewModel '을 참조하십시오. 내가 직면하고 문제는 var에 viewModule 항상 정의되지이다 콘솔은 다음과 같은 오류 날 다시 제공 :
catch되지 않은 형식 오류 : pageviewmodel.js 라인에 정의되지 않은 재산 '프로토 타입'을 읽을 수 없습니다 4
컴파일 pageviewmodel을 (오류를 제공하는 것은) 다음과 같습니다
내가 타이프에서 할 수 없습니다 일을하지만 난 누락하지 않도록 어떤 메신저하려고 같은 느낌var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
__.prototype = b.prototype; // uncaught TypeError: Cannot read property 'prototype' of undefined
d.prototype = new __();
};
var ViewModule;
(function (ViewModule) {
var PageViewModel = (function (_super) {
__extends(PageViewModel, _super);
function PageViewModel(ko) {
_super.call(this, ko);
this.content = this.ko.observable('');
}
return PageViewModel;
})(ViewModule.BaseViewmodel);
ViewModule.PageViewModel = PageViewModel;
})(ViewModule || (ViewModule = {}));
//# sourceMappingURL=PageViewModel.js.map
. 나는 정말로 모듈 클래스를 위해 별도의 파일을 사용하고 싶지만 타이프 스크립트가 이것을 허용하지 않는다고 생각하기 시작했다.
모듈 옵션이 'amd'로 설정된 Grunt-ts로 ts 파일을 컴파일하고 있지만 아무 것도 작동하지 않는 것 같습니다. 누군가가 나를 도울 수 있다면 나와 오른쪽 경로에 메신저 또는 그 위대한 것입니다 말해!