gpt4 book ai didi

javascript - Typescript - 条件要求

转载 作者:搜寻专家 更新时间:2023-10-30 21:12:33 24 4
gpt4 key购买 nike

moment-timezone 的一个问题是,如果多次包含它,它会向您发出警告。我有一个需要时区的模块。因为我不知道使用的人是否会自己设置时区,所以我有以下内容:

if (moment.tz === undefined) {
require('moment-timezone');
moment.tz.setDefault('America/Los_Angeles');
}

这在普通 Javascript 中工作正常。我最近正在尝试切换到 Typscript,当我这样做时,我收到错误消息 Cannot find name 'require'

我将该行切换为 import momentTimezone = require('moment-timezone'); 但随后得到 An import declaration can only be used in a namespace or module.

我能做什么?

最佳答案

import foo = require ('foo') 是特定于 typescript 的。它做了两件事,将类型定义导入声明空间,将实际模块导入变量空间。如果您在任何时候都不使用导入的模块而仅将其用于输入,那么它将在运行时被删除。但是如果你在变量命名空间上使用它,例如,调用一个方法或将它分配给一个变量,那么你将得到一个运行时导入。了解这一点非常重要,因为它会让您大吃一惊。

如果你想导入和使用类型定义,并且只在满足某些条件时导入实际模块,那么你必须像这样将 typescript 的导入与常规 require 结合起来:

import foo = require('foo');

export function loadFoo() {
// This is lazy loading `foo` and using the original module *only* as a type annotation
var _foo: typeof foo = require('foo');
// Now use `_foo` as a variable instead of `foo`.
}

关于javascript - Typescript - 条件要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41297489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com