[Typescript] Type Queries (keyof & typeof)
时间:2022-08-10
本文章向大家介绍[Typescript] Type Queries (keyof & typeof),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
keyof
The keyof
type query allows us to obtain type representing all property keys on a given interface.
key can be string, number or Symbol.
So what if you only want get string type key?
type DatePropertyNames = keyof Date
Not all keys are string
s, so we can separate out those keys that are symbol
s and those that are string
s using the intersection operator (&
).
type DatePropertyNames = keyof Date
type DateStringPropertyNames = DatePropertyNames & string
// "toString" | "toDateString" | "toTimeString" | "toLocaleString" | "toLocaleDateString" | "toLocaleTimeString" | "valueOf" | "getTime" | "getFullYear" | "getUTCFullYear" | ... 33 more ... | "getVarDate"
type DateSymbolPropertyNames = DatePropertyNames & symbol
// type DateSymbolPropertyNames = typeof Symbol.toPrimitive
typeof
The typeof
type query allows you to extract a type from a value. An example is shown below
async function main() {
const apiResponse = await Promise.all([
fetch("https://example.com"),
Promise.resolve("Titanium White"),
])
type ApiResponseType = typeof apiResponse
// type ApiResponseType = [Response, string]
}
The following code:
class Fruit {
constructor(
public readonly name: string,
public readonly mass: number,
public readonly color: string
) {}
static createBanana() {
return new Fruit("banana", 108, "yellow")
}
}
const MyFruit = Fruit // const MyFruit: typeof Fruit
const fruit = new Fruit("banana", 10, "yellow"); // const fruit: Fruit
const banana = Fruit.createBanana(); // const banana: Fruit
If you just use:
const MyFruit = Fruit
It point to constructor, and static methods. Anyhow, in javascript, Class is just a function.
原文地址:https://www.cnblogs.com/Answer1215/p/16573660.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 2020-07-23-kubernetes集群使用腾讯云cbs块存储
- 十一、详解面向对象
- 十二、面向对象实战之封装拖拽对象
- 数组reduce方法的高级用法
- 十七、详解 ES6 Modules
- 超干货!为了让你彻底弄懂 MySQL 事务日志,我通宵肝出了这份图解!
- 什么情况下不能使用最坏情况评估算法的复杂度?
- Python运算符
- kubeadm高可用集群意外删除一mater节点,重新加入失败
- Chevereto——简介及安装
- Typecho开启伪静态并隐藏index.php
- Prism代码高亮Pjax重载函数
- Qt示例-AnalogClock-自定义窗体-使用QPainter的转换和缩放特性简化绘图
- 2019-12-27-traefik
- 2019-12-05-eck-qustion