Расширение класса в TypeScript с помощью элемента stati c - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю с NSwag для создания автоматического c файла TS из моего внутреннего API. Сгенерированный код работает хорошо, но в случае сомы мне нужно расширить мой класс с помощью утилиты (Es. Добавить переименовать массив объектов, проверить ограничение, ..)

В C# довольно просто:

    public class Demo {
       public string Name {get;set;}
    }

    public static class DemoExtension{
        public static string GetUpper(this string name){
            /// code removed
        }
    }

Как реализовать этот шаблон на TS?

Я пытаюсь следовать некоторому потоку, чтобы говорить об интерфейсе без успеха.

/// file test.module.ts
namespace test {
    export class Demo{
        public name : string;
    }
}

/// file demoextension.d.ts
interface DemoExtension {
    getUpper:string(attr:Demo){
        return ...
    }
}

/// file controller.ts
import * as test from './test';

class CtrlDemo
{
    public a : test.Demo;
    constructor(){
        a = new test.Demo();

        // Now TS say me that method not exist
        a.getUpper();
    }
}

1 Ответ

0 голосов
/ 07 апреля 2020

Этот сгенерированный код равен тому, что у вас есть в C#

namespace test {
    export class Demo{
        public name : string;
    }


   /// file demoextension.d.ts
   export class DemoExtension {
      static getUpper(name: string):string {
          return ...
      }
   } 
}

/// file controller.ts
import {Demo, DemoExtension } from './test';


class CtrlDemo
{
    constructor(){

        // Now TS say me that method not exist
        DemoExtension.getUpper('hello');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...