关于typescript:Cannot-find-name-unknown

11次阅读

共计 735 个字符,预计需要花费 2 分钟才能阅读完成。

在 angular 我的项目中引入 qs 解决 url 的 query 局部参数。
因 qs 库是纯 js,引入类型定义库 @types/qs 显示代码提醒:

npm i qs
npm i @types/qs -D

装置后我的项目应用库:

import * as qs from 'qs';

let queryStr:string = qs.stringify(reqParams);

此时编译代码会报错:

index.d.ts(61,101): error TS2304: Cannot find name 'unknown'

看看这个 d.ts 报错处的代码:

function parse(str: string | Record<string, string>, options?: IParseOptions): {[key: string]: unknown };

unknown 在 ts 里作为一种类型,是 ts3+ 反对的个性。但我的我的项目依赖的 ts 版本是 2.9.2,所以不反对这个语法。

晓得起因就解决了一半的问题,有 2 种解决思路:
1. 降级 typescript 到新版本;
2. 降 @types/qs 版本,不要超过我的项目所依赖的 ts 版本;

说降落 @types/qs 版本的形式。在 npmjs 网站能够清晰看到该包兼容的 ts 版本:

6.5 的版本比拟适合,6.9 就不行。个别 npm 包默认装置后,会做小版本主动降级,可见 6.9.4 曾经是只兼容 ts3.1 了,如果装置 6.9.2 主动降级后就歇菜了。
这种降单个包的形式比拟保险,对于老我的项目,装置的很多包版本都比拟旧,如果降级框架或者 ts 版本,可能呈现某些包不兼容的状况。

在老我的项目里装置新包或晋升包版本,对于 Cannot find name 之类的 ts 类型报错,想都不必想是版本兼容问题。甚至能够不必上网查,间接尝试装置低版本的包没准问题就好了。

正文完
 0