TypeScript模板文字中string和keyof类型的用途 基础概念 String: 在TypeScript中,string是一个基本类型,用于表示文本数据。 Keyof:keyof是一个关键字,用于获取一个对象类型的所有键(属性名)的联合类型。 相关优势 String: 使用string类型可以确保变量或参数是文本数据,有助于类型检查和避免运行时错误。
type SPoint={[KinP]:string} 如果一个类型由string、number索引签名,keyof 会返回这些类型代替。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 type Arrayish={[n:number]:unknown};typeA=keyof Arrayish;//A的类型是number 代码语言:javascript 代码运行次数:0 运行 AI代码解释 type Mapish={[k:str...
type P3 = string["charAt"]; // (pos: number) => string type P4 = string[]["push"]; // (...items: string[]) => number type P5 = string[][0]; // string 1. 2. 3. 4. 5. 二、keyof 的作用 JavaScript 是一种高度动态的语言。有时在静态类型系统中捕获某些操作的语义可能会很棘手。
constpoint={x:1,y:1};typePointType=typeofpoint;constperson={name:'xxx'}asany;typePersonType=typeofperson;typePointKeysType=keyofPointType;// 等价于 type PointKeysType = "x" | "y" 映射类型使用 keyof 时提取不到属性,此时默认返回可以作为对象属性值的类型联合string | number | symbol。映射类...
type City = User['address']['city']; // string 可以通过联合类型来一次获取多个属性的类型: type IdOrName = User['id' | 'name']; // string | number (3)应用 我们可以使用以下方式来获取给定对象中的任何属性: function getProperty<T, K extends keyof T>(obj: T, key: K) { ...
{ [key: string]: any } 如果您希望N仅被约束为字符串,那么您可以将该需求与N的约束相交。 const foo = < T extends Foo, N extends keyof T & string >(dict: T, key: N) => { return bar(key); } foo({ a: 123 }, 'a') // fine foo({ a: 123 }, 'b') // error See Play...
function prop(obj: object, key: string) { return (obj as any)[key]; } 1. 2. 3. 该函数用于获取某个对象中指定属性的属性值。因此我们期望用户输入的属性是对象上已存在的属性,那么如何限制属性名的范围呢?这时我们可以利用本文的主角 keyof 操作符: ...
TypeScript 允许我们遍历某种类型的属性,并通过 keyof 操作符提取其属性的名称。keyof 操作符是在 TypeScript 2.1 版本引入的,该操作符可以用于获取某种类型的所有键,其返回类型是联合类型。例如:接口示例:接口定义:interface Person { name: string;age: number;location: string;} 使用 keyof 获取...
上面示例中,类型Foo等于类型string的所有原生属性名组成的联合类型。这是MyEnum为字符串 Enum 的结果,如果MyEnum是数值 Enum,那么keyof MyEnum相当于keyof number。 这是因为 Enum 作为类型,本质上属于number或string的一种变体,而typeof MyEnum会将MyEnum当作一个值处理,从而先其转为对象类型,就可以再用keyof运算...