typescript之类型操作

typescript提供了一些方式来操作类型这种数据,但是需要注意的是,类型数据只作为类型来使用,而不是作为程序中的数据,这是两种不同的数据,一个在编译检测阶段,一个用户程序执行阶段

typeof

在typescript中 typeof 有两种作用:

  • 获取数据的类型
  • 捕获数据的类型
let str1 = 'hello';
//let声明的是变量,把 'string' 作为值
let t = type of str1;   
//type声明的是类型,把 ‘string’作为类型
type myType = typeof str1;

let a = t;
let str2: myType = 'world';

keyof

获取类型的所有 key 的集合

interface Person {
  name: string;
  age: number;
}
type personKeys = keyof Person;
//等同于:type personKeys = 'name' | 'age'
let p1 = {
  name: 'thia',
  age: 30
}
function getPersonVal (k: personKeys) {
  return p1[k]
}
/**等同于
function getPersonVal(k: 'name' | 'age'){
  return p1[k]
}
*/
getPersonVal('name')   //ok
getPersonVal('gender')   //error

in

针对类型进行操作的话,内部使用的for in 对类型进行遍历

interface Person {
  name: string;
  age: number;
}
type personKeys = keyof Person;
type newPerson = {
  [k in personKeys] : number;
}
/**
type newPerson = {
  name: number;
  age: number;
}
**/
//注意: in后面的类型值必须是 string 或者 number,或者symbol
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。