【问题标题】:How to break on property change?如何打破财产变化?
【发布时间】:2019-03-20 01:19:15
【问题描述】:

javascript 也存在同样的问题,但我认为那里列出的解决方案不适用于 typescript。

首先我有一个express.Request 类型的对象,我想调试它的body 成员:

function test(req : express.Request, res :express.Response, next:(err:any)=>void) {


  req.defineProperty(body, 'someProp', { //Property 'defineProperty' does not exist on type 'Request'.
    get: function () {
        return req._body;
    },

    set: function (value) {
        debugger; // sets breakpoint
        obj._someProp = value;
    }
});

【问题讨论】:

  • Typescript 编译成 javascript,所以你用同样的方式调试它。除非你使用 ts-node 什么的
  • @NurbolAlpysbayev 但它不会让我编译代码/如果可能的话,我要求只用打字稿写。
  • 它怎么会不让你编译呢?你到底看到了什么错误
  • 如果代码无法编译,你打算在哪里“破解”代码?
  • @JJJ 它不会让我将defineProperty 应用于我的对象,但这是调试的一部分。

标签: typescript breakpoints


【解决方案1】:

您要查找的方法称为Object.defineProperty,它将定义属性的对象作为第一个参数。正确的用法是这样的:

function test(req: express.Request, res: express.Response, next: (err: any) => void) {

    Object.defineProperty(req, 'body', {
        get: function () {
            return req._body;
        },

        set: function (value) {
            debugger; // sets breakpoint
            req._body = value;
        }
    });
}

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 2018-08-12
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2012-06-26
    • 2022-01-15
    相关资源
    最近更新 更多