在打字稿中找不到名称“省略”
Posted
技术标签:
【中文标题】在打字稿中找不到名称“省略”【英文标题】:Cannot find name 'Omit' in Typescript 【发布时间】:2019-10-19 18:29:55 【问题描述】:背景
我正在src/@types/index.d.ts
上制作我的自定义index.d.ts
文件。
我需要像下面这样合并我的类型。
// src/@types/index.d.ts
declare namespace Admin
interface InitialStateFromDB
teamSettings:
teamPasswords: TeamPassword[],
teamCount: number
,
adminPasswords: string,
postInfos: PostInfo[] | undefined
interface InitialState extends Omit<InitialStateFromDB, 'adminPasswords'>
adminPasswords: AdminPassword
问题
我收到错误:VSCode Intellisense 的 Cannot find name 'Omit'.ts(2304)
。但是编译效果很好。
所以,我做了省略类型type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
(复制到here)
编译后又报错:'Omit' was also declared here.
在这种情况下我该怎么办?忽略 IntelliSense 的错误?
【问题讨论】:
你尝试重启 VSCode 了吗?我有时会遇到输入错误,这些错误会在重新启动后消失。 @Mathyn 是的,我做到了,但同样的错误。 你确定 VSCode 和你的编译器使用相同的 Typescript 版本吗? @Mathyn 不,VSCode 使用 3.4.5,我的是 3.5.1 如果您使用 3.4.5 版本编译会出现编译错误吗? 【参考方案1】:Omit
是最近才出现的added in TS 3.5.1,因此您可能在您的工作区中使用了还不支持它的旧版本的 TS。
通过关注these instructions,确保您的 VS Code 工作区使用与您正在编译的相同版本的 TypeScript。只需打开一个 TS 文件,在 VS Code 中运行 Select TypeScript Version
命令,然后选择使用您的工作区版本的 TypeScript(应该是 3.5.1)
【讨论】:
我遇到了一个显示相同错误的插件,你能帮帮我吗,我什么都试过了【参考方案2】:尝试使用 "skipLibCheck": true 作为 tsconfig.json 文件中的 compilerOptions 之一
【讨论】:
【参考方案3】:在 vscode 中按 ctrl + shift + p 并输入 TypeScript 并选择“TypeScript: Select TypeScript Version”
【讨论】:
考虑将此作为评论而不是答案发布。 谢谢大佬,我是新来的,还不能评论 获得这些特权只是时间问题【参考方案4】:使用打字稿版本 3.5.x
如果您使用的是 Angular 版本 6,请将其升级到 8.2.2
您可以在package.json
查看以下软件包版本
"dependencies":
"@angular-devkit/build-angular": "^0.803.24",
"@angular/animations": "^8.2.2",
"@angular/cdk": "^8.2.2",
"@angular/common": "^8.2.2",
"@angular/compiler": "^8.2.2",
"@angular/core": "^8.2.2",
"@angular/forms": "^8.0.0",
"@angular/http": "^8.0.0-beta.10",
"@angular/material": "^8.2.2",
"@angular/platform-browser": "^8.2.2",
"@angular/platform-browser-dynamic": "^8.2.2",
"@angular/router": "^6.0.0",
"@material/dialog": "^4.0.0",
"@ng-bootstrap/ng-bootstrap": "^4.0.0",
"@ngx-translate/core": "^10.0.1",
"@ngx-translate/http-loader": "^3.0.1",
"@syncfusion/ej2-angular-charts": "^17.4.51",
"@syncfusion/ej2-angular-diagrams": "^17.4.51",
"@syncfusion/ej2-angular-grids": "^17.4.51",
"@syncfusion/ej2-diagrams": "^17.4.51",
"chart.js": "^2.7.2",
"core-js": "^2.5.5",
"file-saver": "^2.0.1",
"font-awesome": "^4.7.0",
"html2canvas": "^1.0.0-alpha.3",
"jspdf": "^1.5.3",
"lodash": "^4.17.15",
"ng2-charts": "^1.6.0",
"nyc": "^15.1.0",
"rxjs": "^6.4.0",
"stream": "0.0.2",
"timers": "^0.1.1",
"xml2js": "^0.4.19",
"yarn": "^1.6.0",
"zone.js": "^0.9.1"
,
"devDependencies":
"@angular/cli": "^8.2.2",
"@angular/compiler-cli": "^8.2.2",
"@angular/language-service": "^8.2.2",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/lodash": "4.14.116",
"@types/node": "^9.6.1",
"@types/xml2js": "^0.4.3",
"codelyzer": "~4.2.1",
"jasmine-core": "~3.1.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "^4.4.1",
"karma-chrome-launcher": "~2.2.0",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^1.4.2",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^1.0.0",
"protractor": "^6.0.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1",
"typescript": "^3.5.3"
【讨论】:
你能解释一下为什么“使用打字稿版本 3.5.x”可能带有文档链接。您能否正确格式化您的答案。 “依赖项” blob 当前无用且不可读。以上是关于在打字稿中找不到名称“省略”的主要内容,如果未能解决你的问题,请参考以下文章
在 Angular 7 中找不到名称“require”(打字稿 3.1.3)