as 的 用法
- as 类型断言
有时候会遇到一些情况,你会比 TypeScript 更了解 某个值的详细信息。通常这会发生在你清除地知道 一个实体 具有 比 它 现有类型更确切的类型。
通过类型断言 这种方式可以告诉编辑器,“相信我,我知道自己在干嘛。”类型断言好比其他语言的类型转换,但是不进行特殊的数据检查和结构。只是在编译阶段起作用。TypeScript会假设你,程序员,已经进行了必须的检查。
类型断言有两种形式。其一是尖括号语法:
let value: any = 'this is string';
let strLength: number = (<string>value).length;
另一个为as语法:
let value: any = 'this is string';
let strLength: number = (value as string).length;
当你在TypeScript 里使用JSX时,只有as语法断言是被允许的。
- import * as xxx from 'xxx'
import * as obj from,这种写法是把所有的输出包裹到obj对象里。
// index.ts
export function fn1() {
console.log(1);
}
export function fn2() {
console.log(2);
}
// main.ts
import * as Fn from './index.ts';
Fn.fn1(); // 1
Fn.fn2(); // 2
let myName = 'Joe';
let myAge = 18;
let myFn = function() {
return 'My name is' + myName + ‘my age is’ + myAge;
}
export default {
myName as name, // 别名
myAge as age,
myFn as fn,
}
import {fn, age, name} from './test.js';
import * as test from './test.js'; //通过*来批量接收,as 来指定接收的名字
- as ES6为提供了重命名的方法
重命名export和import,如果导入的多个文件中,变量名字相同,即会产生命名冲突的问题,为了解决该问题,ES6为提供了重命名的方法,当你在导入名称时可以这样做。
/*************test1.js*****************/
export let myName: string = "我来自test1.js";
/*************test2.js*****************/
export let myName: string = "我来自test2.js";
/*************index.js****************/
import {myName as name1} from "./test1.js";
import {myName as name2} from "./test2.js";
console.log(name1); //我来自test1.js
console.log(name2); //我来自test2.js