Типизация контекстной переменной при машинописи - PullRequest
0 голосов
/ 07 мая 2018

У меня есть несколько вспомогательных функций, которые объединены в контейнерный объект. И эти функции можно вызывать из любого места кода.

const Utils = {
    isSomeMethod: function (a: INodeType, b: INodeType) {
         // Some logic
    },

    _nodeCheck: function (n: INodeType) {
        //  `this` : {
        //      node: INodeType,
        //      nn: INodeType,   
        //  }

        return (n !== this.node && Utils.isSomeMethod(n, this.nn));
    },

    ...
}

Эта функция может принимать аргументы, а также переменную контекста this У меня есть вопрос, есть ли возможность установить любой конкретный тип на context variable.

ПРИМЕЧАНИЕ: В приведенном выше примере метод _nodeCheck должен принимать переменную контекста с типом {node: INodeType, nn: INodeType} (это стороннее решение и Я не могу изменить его ), также этот метод Широко используется в моем коде и Я хотел бы иметь проверку типа .

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете указать тип this в качестве дополнительного параметра функции. Этот параметр не будет передан в JavaScript и будет использоваться только для проверки типов.

const Utils = {
    isSomeMethod: function (a: INodeType, b: INodeType) {
         // Some logic
    },

    _nodeCheck: function (this: {node: INodeType, nn: INodeType}, n: INodeType) {
        // This as the type specified above and is checked.
        return (n !== this.node && Utils.isSomeMethod(n, this.nn));
    },

    ...
}
let node!: INodeType;
Utils._nodeCheck(node) // not allowed this (aka Utils) is not assignable to {node: INodeType, nn: INodeType}

Это описано в документации здесь .

...