在 Typescript React 中使用 setInterval()

2023-11-30

我正在尝试转换基于 React 的计时器example到打字稿。

这个类看起来有点像这样:

export class Container extends
    Component<IProps, IState> {

    private timerID: NodeJS.Timeout | undefined;  // stops a warning in DidMount

    constructor(props: IRevovlingContainerProps) {
        super(props);
        this.state = { date: new Date() } as any;
    }

    componentDidMount() {
        this.timerID = setInterval(
            () => this.tick(),
            1000
        );
    }

    componentWillUnmount() {
        clearInterval(this.timerID);  // error here on this.timerID
    }

    // ...

In componentWillUnmount() this.timerID有错误:

[ts] 类型为“超时|”的参数undefined' 不可分配给 'number | 类型的参数不明确的'。类型“超时”不是 可分配给键入“数字”。 [2345服]第2345服[双线] 新服

我查过index.d.ts,它声明clearInterval():

declare function clearInterval(intervalId: NodeJS.Timeout): void;

所以看起来我正在将正确类型的参数传递给clearInterval(),但它需要一个数字。请问我应该传递什么?

编辑:如果我更改timerID声明,则会出现错误this.timerID in componentDidMount():

private timerID: number | undefined; 
Type 'Timeout' is not assignable to type 'number'.

NodeJS.Timeout是为了当你在运行时使用node环境。由于您想使用浏览器 API,因此您必须使用number作为类型timerID.

此外,内置函数不应解析其类型node类型定义,根据您的情况。如果你有@types/node已安装,如不需要请卸载。这可能与您需要使用的类型相冲突。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Typescript React 中使用 setInterval() 的相关文章

随机推荐

  • 如何在 ReactJS 中悬停? - 快速悬停期间未注册 onMouseLeave

    当你进行内联样式时 如何在 ReactJS 中实现悬停事件或活动事件 我发现 onMouseEnter onMouseLeave 方法有问题 所以希望有另一种方法可以做到这一点 具体来说 如果您将鼠标快速移到某个组件上 则只会注册 onMo
  • 使用选择器和 isEnabled() 禁用列表视图项目

    Scope 使用重写的ArrayAdapter 使用选择器 使用 isEnabled 禁用项目 Aim 禁用某些列表项并通过选择器加载禁用状态视图 Problem 一切正常 自定义视图 未聚焦 聚焦和按下状态的选择器 但禁用的项目不使用禁用
  • 没有花括号的“for”循环有什么作用?

    a 是什么意思for循环周围没有任何花括号吗 据我所知 在 if 语句期间仅执行代码的第一行 那么在 for 循环中它是如何工作的呢 我不太理解不带大括号和带大括号的循环的概念 我想用一段代码进行解释会有所帮助 顺便说一句 这是在 C 语言
  • 锚链接到页面的某个位置

    我有一个链接到另一个页面的锚链接 单击时 默认情况下它会转到下一页的顶部 我希望它被带到页面的某个位置 我该如何做到这一点 使用 jQuery 幻灯片效果或普通 html 例如 当单击 sample a 时 我希望它将您带到链接页面的某个位
  • Compose java.lang.IllegalStateException:尚未应用挂起的组合

    我只想运行简单的测试 class Exa get Rule val composeTestRule createAndroidComposeRule
  • 允许在 JavaScript 中使用西班牙正则表达式的字母数字吗?

    你好 我在 javascript 中尝试了以下代码 if 0 9a z i test string alert oK WITH THE INPUT else alert error 但即使我在字符串中输入了 字符 我也得到了 OK 的结果
  • R 绘制匹配传单地图中选定多边形的图

    我制作了一张传单地图 我想绘制我点击的多边形 我尝试使用 input mymap shape click 和 event id 但它不起作用 请你帮助我好吗 这是一个可重现的示例 这是我的用户界面 library shiny library
  • 如何在 Azure 应用服务上运行 django manage.py 命令

    我想在我的应用程序中的 azure 应用程序服务上执行 Django migrate 命令 python manage py migrate 但我不知道该怎么做 作为常见场景 我们利用虚拟环境来处理 python 脚本作为官方指南显示 如果
  • 使用嵌套循环降低算法的时间复杂度

    I have the following algorithm which I want to rewrite so it has time complexity O n I am new to algorithms but from my
  • JTextArea 实时拼写检查器

    我需要一个好的 Java 拼写检查器库 它可以实时检查 JTextArea 或任何 JTextComponent 的拼写 也就是说 当用户键入时 文本下方应该出现红色波浪下划线 它需要能够通过左键单击 是的 左键单击 单词来列出所有可用的单
  • 使用 Microsoft Graph 删除日历事件 - 为什么我需要多次调用?

    经过大量调查和 Beta 测试 我提出了以下删除日历事件的方法 public async Task
  • 在 JavaScript 中向 Map 添加键/值对的不同方法

    根据MDN地图设置方法 在 javascript 中将键 值对添加到地图的唯一方法是set方法 我想知道当我们添加带有方括号的键 值对时 映射的行为是什么 如下所示 const testMap new Map testMap set 1 f
  • 使用 mongoose 插入或更新到 Mongodb 并在更新时修改内部元素

    假设有一个包含文档的集合 其中field 1是独特的 field 1 abc field 2 0 field 3 我想添加另一个文档 但是随后field 1是一样的 abc 在这种情况下我想增加field 2 并将元素附加到field 3更
  • C#中有连接字符串解析器吗?

    我有一个连接字符串 我希望能够查看例如 数据源 是否有解析器 或者我必须搜索字符串 是的 有System Data Common DbConnectionStringBuilder class DbConnectionStringBuild
  • 在浏览器上存储 css 类

    我的项目可以选择通过单击链接来更改网站主题 ul li class a href Contact a li li class facebook a href Facebook a li li class twitter a href Twi
  • 嵌套路由的命名参数

    resources leagues do resources schedule end 这会生成 leagues id leagues league id schedule id 如何防止联盟 ID 更改参数名称 所以它会是 leagues
  • Matplotlibs Annotate 中的 xytext 详细信息

    通过以下代码 我绘制了烛台图并使用了注释 我一直在玩直到找到文本的正确位置 但我仍然不明白这些数字是什么xytext 15 27 and xytext 17 20 与他们现在的地位有关 这对我来说很奇怪 有人可以向我解释一下吗 提前谢谢了
  • 在 Blender 3D 中生成随机地形

    我尝试在谷歌中找到一个Python脚本 它将在游戏开始时 或每次玩家前进到一个新场景时 生成一个随机地形 但我找到的所有工具都是用于创建地形来渲染它 而不是用于游戏模式 知道如何 在哪里找到一个吗 我假设由于Blender3D具有游戏编程功
  • 使用 JavaFX 创建六边形字段

    我的目标是创建一个六边形瓷砖区域 我已经拥有一个单元矩阵 每个单元的高度都足以容纳完整的六边形图像 import javafx application Application import javafx scene Scene import
  • 在 Typescript React 中使用 setInterval()

    我正在尝试转换基于 React 的计时器example到打字稿 这个类看起来有点像这样 export class Container extends Component