将键入的对象的字段与Typescript中的基元进行比较的正确方法是什么?

时间:2019-03-27 21:39:59

标签: typescript tslint

如果您有一个键入对象的字段,并希望将其与基本类型进行比较,例如对1ABCD说,那么这样做的正确方法是什么?

这是一个例子。

interface Model {
  __typename: "floors";
  value: number;
  formattedValue?: string;
}

此比较为我提供了所需的答案,但是tslint说== should be ===

if (model.value == 1) {
     return true;
}

这没有给我我想要的答案。即使value为1,也不会返回true。

if (model.value === 1) {
     return true;
}

如何在不冒犯tslint的情况下进行此比较?

我发现的唯一方法是:

if (Number(value) === 1) {
     return true;
}

...但是创建一个仅用于比较的数字感觉是错误的。

1 个答案:

答案 0 :(得分:1)

或者,告诉TSLint停止检查==https://palantir.github.io/tslint/usage/configuration/

// tslint.json
{
    "rules": {
        "triple-equals": false
    }
}

https://palantir.github.io/tslint/rules/triple-equals/

原帖上的评论就在现场。尽管您在TypeScript中已经声明value属性始终是number s,但似乎无论您从哪里获取它们,都将它们传递为string s。以下条件之一必须为真:

  • 您所声明的键入内容不正确;您应该改为说value: string
  • 您所声明的键入内容应该是正确的,但是某些东西错误地给了您string

TypeScript只是开发时间提示的集合。它与运行时发生的情况无关。