typescript 中变量类型自动转换了

typescript 代码
clipboard.png
控制台输出的结果
clipboard.png

第一次打印的时候是个 number,但是循环的时候,怎么就变成了 string 字符串类型的呢??奇了怪了

阅读 3.7k
2 个回答

一张图帮你诠释(注意:5的颜色

图片描述

TypeScript 不会帮你转换数据类型,它只是按你声明的数据类型和一定的智能推断来检查是否存在类型错误或风险。所以你应该检查是不是程序在什么地方进行了转换,比如在使用普通对象作映射的时候,它的键只能是字符串符,其它类型也会自动转换的。

下面这段代码完全是按你的代码写的,输出完全没有问题

class Product {
    id: number;
    constructor(id: number) {
        this.id = id;
    }
}

const products = Array.from(Array(8), (x, i) => new Product(i + 10));

function getProductId(id: number): Product {
    return products.find((product) => {
        console.log(product.id, id);
        return product.id === id;
    });
}

const p = getProductId(15);
console.log(p);

下图是在 TypeScript Playground 上转译的代码直接在浏览器(Chrominum)上执行的结果:

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题