使用typescript定义文件(.d.ts)键入javascript代码不会';t警告基元类型错误

使用typescript定义文件(.d.ts)键入javascript代码不会';t警告基元类型错误,javascript,typescript,.d.ts,Javascript,Typescript,.d.ts,我有一个简单的js组件 ./component/index.js:export const t='string value' 它具有类型脚本定义文件 /组件/索引d.ts:导出常数:编号 非常简单的typescript/react项目正在使用此组件: ./demo/index.tsx: 从“React”导入React; 从“react dom”导入react dom; 从“../component”导入{t}; render({t},document.getElementById('app');

我有一个简单的js组件

./component/index.js:
export const t='string value'

它具有类型脚本定义文件

/组件/索引d.ts:
导出常数:编号

非常简单的typescript/react项目正在使用此组件:

./demo/index.tsx:

从“React”导入React;
从“react dom”导入react dom;
从“../component”导入{t};
render({t},document.getElementById('app');
预期结果:typescript错误,指示“t”的值应为数字,而不是收到的字符串

实际结果:没有来自typescript的错误或警告

这是一个复制此问题的小项目,我尝试将其最小化,只需执行以下操作:

  • git克隆git@github.com:omatviiv/ts定义文件test.git
  • npm i
  • npm运行开发人员

我检查了,但是它没有帮助(他们在示例中提到了
12
而不是数字类型,这会让人感到困惑),同时也提供了对这个用例似乎没有用处的信息。

我相信,当您提供
d.ts
时,它会将其作为福音,而直接忽略代码文件中的任何代码


所以在你的例子中,
t
是一个
数字
。因此,在react
{t}
中,react将强制显示数字,因此此处不会出现任何类型错误。

感谢您的回答1。反应不是原因。我尝试了同样的方法,从等式中删除react——用“../component”中的
import{t}替换
/demo/index.tsx
内容;控制台日志(t)和typescript没有抱怨。您所说的意思是定义文件的行为与ts文件不同,因为如果我向index.tsx添加一行:
const b:number=12它导致错误:TS2322:类型“12”不可分配给类型“string”。同时这也很好:index.js
export const t=12索引d.ts
导出常量:字符串这让人困惑,因为我认为.d.ts可以用来编写与直接在ts文件中一样严格的打字。结果不是这样,或者我只是缺少了一些ts配置选项?
import React from 'react';
import ReactDOM from 'react-dom';
import { t } from '../component';

ReactDOM.render(<>{ t }</>, document.getElementById('app'));