强制Webpack从无效的TypeScript代码构建输出

时间:2019-01-28 03:24:19

标签: typescript webpack

基本上,当存在错误时,使Webpack捆绑源代码是不好的。但是,彻底重写我的TypeScript代码时,我经常需要检查console.log()的输出。我将显示简化的示例。

假设,在下面的代码中,我决定将parameter的类型从CertainType1替换为CertainType2

testFunction(parameter: CertainType1): CertainTypeFoo {

    const a: CertainTypeA = doSomethingWithCertainType1Or2(parameter);
    // check "a" value here!
    console.log(a);

    // I don't care what occurs here YET
    const b: CertainTypeB = doSomethingElseWithCertainType1(parameter);
    const foo: CertainTypeFoo = getInstanceOfFoo(a, b);

    // do something with foo...

    return foo;
}

当我将testFunction(parameter: CertainType1): CertainTypeFoo替换为testFunction(parameter: CertainType2): CertainTypeFoo时,功能将失效,因为doSomethingElseWithCertainType1仅需要CertainType1

但是我还不关心它:暂时,我需要检查const a的值,并确保一切正常,const a ,我将前进并处理const b

不当的解决方案:

  1. 注释掉const b行中的所有内容testFunction必须返回CertainTypeFoo。假设通过其他方式获取模拟实例并不简单。

  2. 首先将所有代码重写为有效的TypeScript,然后再开始检查const a :对于实际应用程序,“重写所有代码”可能要花费几个小时。

2 个答案:

答案 0 :(得分:0)

@GeorgeP在他的评论中对TypeScript部分是正确的,但它也需要设置

module.exports = {

  // ... 

  optimization: {
    noEmitOnErrors: false
  }
}

对于Webpack。

答案 1 :(得分:0)

只需将类型强制转换为您想要的类型:

testFunction(parameter: CertainType2): CertainTypeFoo {

    const a: CertainTypeA = doSomethingWithCertainType1Or2(parameter);
    // check "a" value here!
    console.log(a);

    // I don't care what occurs here YET
    const b: CertainTypeB = doSomethingElseWithCertainType1(parameter as CertainType1);
    const foo: CertainTypeFoo = getInstanceOfFoo(a, b);

    // do something with foo...

    return foo;
}

通过显式转换,您是在告诉打字稿您不在乎它认为(或不认为)该类型是什么,打字稿会对此予以尊重。

无需更改编译器标志