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

问题描述 投票:0回答:1

如果你有一个类型对象的字段并希望将它与一个原语进行比较,比如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;
}

...但是为了进行比较而创建一个数字感觉不对。

typescript tslint
1个回答
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属性总是numbers,但是无论你从哪里获取它们都将它们作为strings传递。必须满足以下条件之一:

  • 您宣称的打字不正确;你应该说value: string
  • 你宣称什么是打字应该是正确的,但有些东西错误地给你一个string

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

© www.soinside.com 2019 - 2024. All rights reserved.