小编Tom*_*son的帖子

TypeScript:从装饰器推断返回类型?

当装饰器更改其返回类型时,如何让 TypeScript 推断装饰方法的类型?

在下面的基本示例中,我装饰一个方法以返回字符串化对象:

function jsonStringify() {
  return function (target, decoratedFnName: string, descriptor: PropertyDescriptor) {
    let decoratedFn = descriptor.value;

    let newFn = function () {
      let object = decoratedFn.apply(target, arguments);

      return JSON.stringify(object);
    };

    descriptor.value = newFn;

    return descriptor;
  }
}

class Decorated {
  @jsonStringify()
  method(name: string, description: string) {
    return {
      name: name,
      description: description
    }
  }
};

let stringifiedObject = new Decorated().method('Test Name', 'Test Description');

console.log(stringifiedObject.includes('Test Name'));
Run Code Online (Sandbox Code Playgroud)

如果我在 tsconfig.json 中转译 TypeScript "noEmitOnError": false,那么代码将完美运行并在控制台中记录 true。然而,tsc 抱怨错误:

error TS2339: Property …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-typings

5
推荐指数
1
解决办法
6951
查看次数

标签 统计

typescript ×1

typescript-typings ×1