>

이유를 알 수 없습니다. 동일한 인터페이스를 구현하고 인터페이스 속성에 다른 값을 설정하는 2 개의 클래스를 만들었습니다. 코드를 실행하면 클래스 중 하나가 빈 개체를 반환하고 다른 클래스는 예상대로 작동합니다.

LinkBinding.ts

export enum LinkTypes {
    Custom = 'Custom',
    Page = 'Page'
}
export interface LinkBinding {
    type: LinkTypes
}

LinkPage.ts

import {LinkBinding, LinkTypes} from "./LinkBinding";
export class LinkPage implements LinkBinding {
    type: LinkTypes = LinkTypes.Page;
    isAbsolute: boolean = false;
}

LinkCustom.ts

import {LinkBinding, LinkTypes} from "./LinkBinding";
export class LinkCustom implements LinkBinding {
    type: LinkTypes = LinkTypes.Custom;
}

JS에 LinkCustom.ts 연결

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var LinkBinding_1 = require("./LinkBinding");
var LinkCustom = /** @class */ (function () {
    function LinkCustom() {
        this.type = LinkBinding_1.LinkTypes.Custom;
    }
    return LinkCustom;
}());
exports.LinkCustom = LinkCustom;

JS에 LinkPage.ts

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var LinkPage = /** @class */ (function () {
    function LinkPage() {
    }
    return LinkPage;
}());
exports.LinkPage = LinkPage;

LinkCustom.js 를 볼 수 있듯이   type 가  재산이지만 LinkPage.js  하지 않습니다.

무슨 문제입니까?


  • 답변 # 1

    위의 주석에서 놀이터 코드를 본 후 작동합니다. 프로젝트 디렉토리를 살펴 보았습니다. 모든 유형 스크립트 파일에는 오래 전에 컴파일 한 JavaScript 파일이 있었고 삭제하지 않았습니다. Typescript 또는 webpack은 typescript 파일 대신 해당 JavaScript 파일을로드했습니다. JavaScript 파일을 삭제 한 후 Typescript가 .ts 를 다시 컴파일했습니다.  파일. 와이즈 비즈  다른 파일들은 다른 Typescript 프로젝트에서 라이브러리로 사용됩니다. LinkPage.ts 에 경로를 추가 할 필요가 없습니다.  다른 프로젝트의.

    내 디렉토리 구조는 다음과 같습니다 :

    src

    VueJs 프로젝트 (타입 스크립트)

    내 도서관 프로젝트 (유형)

    와이즈 비즈   tsconfig.json 에서 참조 . 그래서 나는 My library project 를 포함하지 않습니다   VueJs project 로 . My library project 에서 js 파일 삭제  작동 시켰습니다.

    My library project/tsconfig.json

관련 자료

  • 이전 파이썬에서 메사 라이브러리를 사용하는 동안 멀티 에이전트 시스템에 서브 에이전트를 정의 할 수 어쨌든 있나요?
  • 다음 java - 마샬링 할 때 JAXB의 요소에 네임 스페이스 속성을 추가하려면 어떻게합니까?