为什么打字稿强制错误的变量名称解析

Why typescript forces wrong variable name resolution

我最近创建了一个 create-react-app project to which I added cypress。我添加了一个名为 setup.ts 的支持文件(位于 repositoryRoot/cypress/support/setup.ts),其中包含以下代码:

beforeEach(() => {
    cy
});

我想写 cy.wrap({setting1: 'value1'}).as('settings') 但是当我输入 cy. 打字稿自动完成 强制 cy. 变成 crypto.。我试过禁用自动完成功能,但没有用。坦率地说,我不明白这是由 IDE 的自动完成还是 typescript 变量名称解析引起的,因为这种情况在 VSCODE 和 codesandbox.

中都会发生

这是 link 到 sandbox,问题在沙箱中重现 我想知道如何让 IDE 允许我输入 cy.wrap() 理想情况下,自动完成 cypress 中可用的方法。

简短回答: 将其包含在规范文件的顶部:/// <reference types="Cypress" />.

您可能还需要使用命令 cmd shift p 重置您的 TS 服务器,然后搜索重新启动 TypeScript 服务器。

此外,您的测试文件默认应位于 integration 文件夹中。目前还没有。

我能够解决问题的唯一方法是安装 npm 包 @types/cypress(即使它应该包含在较新版本的 Cypress 中)。