>

Angular 앱에서 typescript String 인터페이스를 확장하고 있습니다. 내 앱 전체에서 액세스 할 수있는 translate () 메소드를 추가했습니다.컴파일 오류가 없습니다.

그러나 런타임 오류가 발생합니다 :

"TypeError: "Translate this string".translate is not a function"

내가 잘못하고있는 아이디어가 있습니까?

<시간>

내 구현의 스크린 샷은 다음과 같습니다.

선언 :

구현

전화 :


  • 답변 # 1

    이 문제를 해결할 수있었습니다. 이 문제를 해결하는 방법에 대한 업데이트는 다음과 같습니다.

    <시간> 와이즈 비즈 와이즈 비즈  인터페이스 확장 정의를 추가하십시오.

    1.Create a file

    와이즈 비즈 와이즈 비즈

    global.d.ts
    
    
    와이즈 비즈 와이즈 비즈 export { }; declare global { interface String { /** * Translates the given string according to the culture provided. * @param cultureName The culture name of the translation target. * @returns The translated string. */ translate(cultureName: string): string; } } 에 대한 참조를 추가하십시오.  확장 방법이 포함 된 파일   정의.

    2.Create another file with the interface extension methods definition. In my case I named it

    프로젝트에서이 파일을 한 번만 가져와야합니다 ( string.extensions.ts ) 그런 다음 코드의 어느 곳에서나 사용할 수 있습니다.

    와이즈 비즈
    /**
     * Translates the given string according to the culture provided.
     * @param cultureName The culture name of the translation target.
     * @returns The translated string.
     */    
    String.prototype.translate = function(cultureName: string): string
    {
        const inputValue = this;
        // Do the translation here
        const translatedValue = 'Willkommen bei meiner App'; // Only for example
        return translatedValue ;
    };
    
    
    <시간>

    이 성가신 문제를 해결하기 위해해야 ​​할 전부입니다.

    작동하는 플런저에 대한 링크는 다음과 같습니다.Plunker Demo

  • 답변 # 2

    이것은 저에게 효과적입니다 :

    인터페이스 선언

    3.In your app boot file, in my case its

    사용법

    main.ts
    
    

  • 답변 # 3

    귀하의 선언이 별도의 파일에 있다고 생각합니다. 여전히 기본 선언을 사용합니다. 코드에 접근 할 수 없습니다. 파일 또는이 파일에서 직접 가져 오기를 사용해보십시오.

    global.d.ts
    
    
    /// <reference path="app/core/extensions/global.d.ts" /> //... import './app/core/extensions/string.extensions';

관련 자료

  • 이전 python - 목록에 나타나는 데이터 프레임에 행을 유지
  • 다음 sql - SqlAlchemy 쿼리/행 병합