打字稿值检查

时间:2019-03-04 16:19:58

标签: javascript typescript

我有这样的功能:

  private myFunc = (myNumber: number) => {
    if (myNumber === 1) {
        console.log('here');
    }
  }

在myNumber为1的情况下,没有控制台输出。通过查看控制台,我可以看到myNumber被视为其他类型(字符串)。像这样更改代码即可:

  private myFunc = (myNumber: number) => {
    if (myNumber == 1) {
        console.log('here');
    }
  }

在这种情况下,我的印象是Typescript会发出“编译”错误,但事实并非如此。谁能告诉我为什么?

2 个答案:

答案 0 :(得分:1)

Typescript使用静态类型检查(运行时不存在Typescript),因此,如果将字符串传递给函数'myNumber',则为字符串。您需要在函数内添加自己的支票

  private myFunc = (myNumber: number) => {
    if (parseInt(myNumber) === 1) {
        console.log('here');
    }
  }

答案 1 :(得分:1)

是的,如果您愿意的话,Typescript将显示编译时错误:

def create_new_cell(contents):
    from IPython.core.getipython import get_ipython
    shell = get_ipython()

    payload = dict(
        source='set_next_input',
        text=contents,
        replace=False,
    )
    shell.payload_manager.write_payload(payload, single=False)

但是,就像您在运行时调用它一样,Typescript无法对其进行检查。