在打字稿中导出实用函数?

2024-01-03

我正在尝试这样做(伪代码):

export const isDefined:Function<boolean> = ((value:any)) => {
    return !(value==null);
};

The isDefined如果 value 参数不为 null 或未定义,则函数返回一个布尔值,并接受any类型作为参数。关于如何让它发挥作用的想法?


建议:避免使用Function只要有可能。它消除了类型安全性:

// these should error, but they don't
isDefined()
isDefined(1, 2, 3, 'too', 'many', 'args')

要保存类型签名,请删除Function。也不妨使用!=为了简单起见:

export const isDefined = (value: any): boolean => {
  return value != null
}

作为奖励,您可以滥用泛型来使函数变得更智能。在这里,该函数使用generic https://www.typescriptlang.org/docs/handbook/generics.html T推断传递给它的内容的类型,然后它使用类型保护 https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards在某些情况下缩小类型,例如一个 if 语句。 (注:我将其定义为function让它发挥作用.tsx文件。由于 JSX 的歧义,无法解析单通用箭头函数。)

export function isDefined<T>(value: T | null | undefined): value is T {
  return value != null
}

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

在打字稿中导出实用函数? 的相关文章

随机推荐

  • 用于Linux进程管理的Python库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 通过我的网络界面 我想启动 停止某些进程并确定启动的进程是否仍在运行 我现有的网站基于 Python
  • 在每个时区的凌晨 12 点运行 cron 作业

    所以我认为每个时区之间大约有30分钟的时间 我想运行我的脚本cron php每个时区的中午 12 点 午夜 我怎样才能做到这一点 我正在看这段代码 TZ UTC 7 root date mail root TZ CEST 7 root da
  • Django 错误 ---index() 缺少 1 个必需的位置参数:'pk'

    尝试打开路径时出现此错误 它需要在我的 def 中进行 pk 并插入它 但问题仍然存在 如果有人能帮忙 我会欠你很多 这是我在浏览器中遇到的错误 TypeError at batches index missing 1 required p
  • Android 操作系统是否有 /etc/passwd、/etc/shadow 和 /etc/group 等文件?

    如果不是 android如何判断用户是否属于某个组 该线程讨论了如何完成此操作 http groups google com group android ndk browse thread thread adddb27c1a5438e9 h
  • Unity C# ArgumentOutOfRangeException:参数超出范围。参数名称:索引[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在创建一个像蛇一样的游戏 在我下面的代码中 蛇身体的每个部分都是 Character 类的一个实例 当我尝试添加新角色时 出现错误
  • python中数组的就地修改

    我发现这个问题要求对数组进行就地修改 以便将所有零移动到数组末尾 并保持非零元素的剩余顺序 根据问题陈述 就地意味着不复制原始数组 这取自 Leetcode 可以在 283 Move Zeroes 中找到 输入和输出的示例是 0 1 0 1
  • 如何在 Github Gist 中软换行

    我有一个很长的字符串 我想使用 Github Gist 将其嵌入到我的博客中 我想为其启用换行 以便读者不必向右滚动即可查看整个字符串 即使在编辑时单击 软换行 选项 最终的要点也不会换行 编辑时 启用软包装 保存后 无换行 How can
  • PHP 将任何尺寸的图像调整为 16:9 的宽高比

    午安 我目前正在尝试了解如何以 16 9 的宽高比裁剪服务器上已加载的图像 为了更好地理解 如果我有 4 3 图像 我必须剪切顶部和底部图像部分以使其适合 16 9 比例 Thanks 我举了这个代码示例 http myrusakov ru
  • Javascript 中类似 Python 的“类”

    我想知道如何在 Javascript 中创建类似于 Python 中的 类 采用此处列出的 Python 类和函数 class one def foo bar some code 函数 foo 将被调用one foo bar JS 的等价物
  • 在纯原生 Android 应用程序中渲染文本

    我有一个纯原生的 Android NDK 应用程序 需要在每一帧渲染一些文本 我读过一些帖子 说我需要使用字体的所有字符创建一个图像文件 然后将每个字符渲染为该图像的四边形 这听起来需要大量工作 而且我不知道从哪里获取简单字体 例如 Ari
  • 将lucene索引分成两半

    将现有 Lucene 索引拆分为两半的最佳方法是什么 即每个拆分应包含原始索引中文档总数的一半 拆分现有索引 无需重新索引所有文档 的最简单方法是 制作现有索引的另一个副本 即 cp r myindex mycopy 打开第一个索引 并删除
  • 元组索引超出范围,Tensorflow

    这是模型 它是基本的张量流模型 可以拍摄数字的图片并告诉您它是什么数字 我知道python中的索引从0开始 我遇到的问题是这行代码 model fit np array test np array num 阅读下面的代码以获取更多信息 im
  • MATLAB调用DLL中函数时的堆栈限制是多少

    我试图弄清楚 当 MATLAB 调用 DLL 中的函数时 堆栈大小限制是多少 有没有办法配置限制 我在用loadlibrary and calllib函数来调用 C 实现的函数 在动态链接库中 我创建了一个测试来找出堆栈限制 我使用 MAT
  • MediaRecorder 无效状态 16

    我正在尝试录制音频并保存到 SD 卡 我收到无效状态异常 我添加了正确的权限 例如 record audio 和 write external storage 我在调用 start 之前已经准备好了 MediaRecorder 为什么我会遇
  • 在后台扫描 Android 8+ 上的 BLE 设备

    我在 Android 8 上使用 BLE 扫描仪 API 中的以下方法 扫描 BLE 信标 startScan List
  • 将 C++ 对象(尤其是 stl 容器)移动到特定的内存位置

    我正在与一个内存管理器合作 有时需要对内存进行碎片整理 基本上 我将浏览内存管理器分配的对象列表并重新定位它们 class A SomeClass data This member is allocated by the special m
  • “索引、关注”或“关注”有什么区别?

    下面的列表有什么区别 首先 你可能知道元机器人 标签 元机器人标签是告诉蜘蛛或爬虫要抓取或索引哪个页面 关注手段 页面将被抓取 没有关注意味着 页面不会被抓取 指数均值 您的页面显示在搜索结果中 无索引意味着 您的页面未显示在
  • Rails 3 SQL 查询选择与连接

    我的选择功能和连接有问题 这是我当前的查询 search Building joins INNER JOIN floors ON floors building id buildings id INNER JOIN spaces ON sp
  • 是否支持内存映射文件作为 uwp 应用程序和 win32 进程之间的 ipc

    官方文档没有正确说明 uwp 是否支持通过内存映射文件的 ipc 我正在研究 uwp 应用程序及其桌面扩展之间的 ipc 场景 虽然我可以使用创建内存映射文件System IO MemoryMappedFiles从 uwp 应用程序code
  • 在打字稿中导出实用函数?

    我正在尝试这样做 伪代码 export const isDefined Function