在Typescript严格模式功能下访问被调用方?

时间:2019-03-06 23:16:49

标签: javascript node.js typescript

我正在向this library添加访问arugments.callee的函数。在项目的tsconfig.json中,我设置了"strict": false,从而使此迷你测试正常工作:

    function check() {
        console.log(arguments.callee.name);
    }

那行得通。现在,如果我要导入库的一部分,则要像这样运行测试:

    import {isNumberInRange} from './is';

    function check() {
        console.log(arguments.callee.name);
    //    isNumberInRange(1,0,1);
    }
    check();

即使我实际上没有运行isNumberInRange函数打字稿,它仍然记录以下内容:

  

TypeError:在严格模式函数或调用它们的参数对象上,可能无法访问“ caller”,“ callee”和“ arguments”属性       在检查时(/home/ole/Github/is/src/test.ts:4:27)

要启用呼叫arguments.callee.name,我还需要做什么?

1 个答案:

答案 0 :(得分:1)

除了"strict": false之外,还添加"noImplicitUseStrict": true

TypeScript将自己添加严格模式,需要禁用此模式。

如何执行此操作已在此处回答:prevent-use-strict-in-typescript

  

您可以通过使用--noImplicitUseStrict编译器选项进行编译-在tsconfig.json中的“ compilerOptions”中添加“ noImplicitUseStrict”:true。这样做将防止编译器发出“ use strict”。