我在 TypeScript 中遇到了这个错误消息。我查看了以下答案,但我根本不明白这些解决方案。
这是我的代码的精简版本,其中包含错误:
interface R {
field: string;
operator: string;
value: any;
}
interface RG {
combinator: 'and'|'or';
rules: (R|RG)[];
}
interface RGIC {
rules: (RGIC|R|string)[];
}
type RGT = RG | RGIC;
const f = <T extends RGT>(r: T): T => {
if ('combinator' in r) {
return { combinator: 'and', rules: [] }; // <-- TS error here
}
return { rules: [] }; // <-- TS error here
}
Run Code Online (Sandbox Code Playgroud)
我想表达的是,如果r
是类型RG
,那么函数 …
我有一个名为monoreporeact-querybuilder
的开源项目。大多数 TypeScript 类型定义都位于包中。ts
当我在 VS Code 中为从 导入类型的其他包之一打开文件时@react-querybuilder/ts
,这些类型似乎是根据packages/ts/dist
VS Code 启动时的文件夹进行缓存的。
当我更新文件夹中的类型ts
并重建@react-querybuilder/ts
包时,即使我关闭并重新打开所有文件,更改也不会自动应用到其他项目。
我发现更新类型缓存的唯一方法是重新加载 VS Code 窗口。不幸的是,我的工作计算机很旧,并且不是作为出色的开发计算机而构建的,因此这可能需要一些时间。有没有办法刷新类型而不完全重新加载窗口?
我维护一个包的单一存储react-querybuilder
库。我将文档网站代码合并到该目录下,但不是作为工作区(这些代码位于)。/website
/packages/*
该/website
目录有自己的package.json
脚本docusaurus *
(start/build/deploy/etc.)。我希望在根目录中有脚本/package.json
来执行/website/package.json
. 目前我有这样的东西/package.json
:
{
"scripts": {
"website:install": "cd website && yarn",
"website:start": "cd website && yarn start",
"website:build": "cd website && yarn build",
"website:deploy": "cd website && yarn deploy"
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好、更通用的方法来做到这一点?这样我必须为每个脚本命名两次,一次 in/package.json
一次 in /website/package.json
.
(我尝试过--cwd
,但这实际上并没有运行在其他目录的 中定义的脚本。它运行在其他目录的根目录package.json
中定义的脚本。例如,实际上与 package.json
yarn --cwd website build
yarn build
,至少在我的情况下是这样。)
我认为可能有一个yarn
像--cwd …
我在通过 redux-thunk 使用 Redux 4.0 的新 TS 绑定时遇到问题。我通过将基本的 Redux “待办事项列表”示例转换为 TypeScript(此处为repo),并使 Add Todo 操作成为 thunk来重新创建该问题。问题与此处报告的问题相同:“ThunkAction”类型的参数不可分配给“AnyAction”类型的参数。类型 'ThunkAction' 中缺少属性 'type'。
基本上,我可以让它工作,但我any
在几个我认为不应该使用的地方使用它。一个地方是index.tsx#L14,我将 thunk 中间件添加到存储中:
const store = createStore(
rootReducer,
applyMiddleware(thunk as ThunkMiddleware<IRootState, any>)
);
Run Code Online (Sandbox Code Playgroud)
如果我使用除此之外的任何其他内容any
,则下一行会引发错误:
store.dispatch(addTodo('Use redux-thunk'));
Run Code Online (Sandbox Code Playgroud)
另一个地方是AddTodo.tsx#L7,我在这里声明了由connect
函数注入的 dispatch prop :
interface IAddTodoProps {
dispatch: Dispatch<any>;
}
const AddTodo = ({ dispatch }: IAddTodoProps) => {
...
}
export default connect()(AddTodo);
Run Code Online (Sandbox Code Playgroud)
在这两个地方,都any
覆盖了一个必须扩展的类型 …
我对 javascript 很陌生,但是当我工作时,我试图找到一种方法来获取用户将输入到 html 输入文本框中的文本,但由于某种原因,vs code 无法识别执行此操作所需的智能感知。
我的 HTML 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="text" id="first-input">
<button id="submit-button">Submit</button>
<script src="main.js" type="text/javascript"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
JavaScript:
let firstInput = document.getElementById('first-input');
let submitButton = document.getElementById('submit-button');
submitButton.onclick = function () {
console.log(firstInput.value);
}
Run Code Online (Sandbox Code Playgroud)
为了获取输入文本元素内的数据,其代码是 .value,但是当我开始输入“.val-”时,VS code 的唯一建议是 .nodeValue。
这意味着,为了得到我想要的东西,我使用了 VS Code 的智能感知无法识别的命令。然而,即使智能感知没有找到它,代码仍然按预期运行。
我需要安装或执行某些操作才能访问此信息吗?我担心还有很多其他东西它无法识别,并且会让学习这门语言变得更加困难。提前致谢
我有一个关于使用Redux ToolkitcreateEntityAdapter
的问题。
我有一个应用程序,它使用AG 网格库的主/详细信息功能来显示包和包详细信息。应用程序首先加载包数据,然后在扩展每个包行时获取详细数据。
我想用createEntityAdapter
规范化的方式管理数据,但我无法弄清楚如何处理详细网格的动态特性。现在,我有一个减速器切片,每次加载一组详细记录时都会创建一个新属性。属性键是id
父包行的,因此在加载data
包数据和详细数据后,我的切片最终看起来像这样:123
{
PACKAGES: [{ id: 123, ...otherData }, { id: 124, ...otherData }],
'123': [{ id: 456, ...otherDetailData }],
}
Run Code Online (Sandbox Code Playgroud)
当用户展开124
包行时,会获取该包的详细数据,然后如下所示:
{
PACKAGES: [{ id: 123, ...otherData }, { id: 124, ...otherData }],
'123': [{ id: 456, ...otherDetailData }],
'124': [{ id: 457, ...otherDetailData }],
}
Run Code Online (Sandbox Code Playgroud)
因此,虽然我可以将数据分解PACKAGES
到其自己的实体适配器中,但我无法对详细网格执行相同的操作,因为我事先并不了解每个网格。
我想我和这个问题的人有类似的问题。
我考虑过将所有详细数据存储在单个实体适配器中,并由父级维护另一个索引id
,但这似乎很难保持同步。
有任何想法吗?这种情况下的最佳实践是什么?
javascript ×3
typescript ×3
redux ×2
html ×1
input ×1
intellisense ×1
monorepo ×1
npm-scripts ×1
react-redux ×1
reactjs ×1
redux-thunk ×1
yarnpkg ×1