TypeScript 学习

1. typescript 中的declare 表示声明 一个类或接口后,可以不引入既可以被编译器识别,做为类型使用

如: 在 a.ts 中 定义了

 

declare class A{

name:string;

age:number;

}

 

在b.ts 中可以使用

let a:A = {name:"12",age:12};

在vscode 中不会报错,但是使用 tsc 编译 b.ts 会报错,因为没有引入A.,如果import 了 A就可以正常编译成js.

但是奇怪的是在 vue 的typescript 版本中使用可以正常打包(是ts-loader 作了处理),在不引入类型的情况下使用,可以作为 接口返回类型的约定,或只作为类型不使用new 创建。

 

2. d.ts 是声明文件。d.ts里面的东西不能被引入,只能作为类型来用,d.ts里面的东西也不会被编译成js,只是作为编译阶段被识别。

d.ts 可以作为 js的声明文件来使用(在js中是无法引入js的)。

例如:有一个 a.js

function A(){
    console.log("我是A");
}
export default A;

在 main.ts中如果引入

import A from "./a.js" //编译器会报错。

新增一个 a.d.ts

declare let A :()=>void;
export default A;  //需要导出才能引用

 这时在main.ts 改成 如下,不会报错。实际编译后引入的是t.js。

import A from "./t.js"
A();

使用ts-loader + webpack 打包main.ts 后得到的 是调用t.js 中的A。

实际上d.ts 只是作为一个声明作用,只在编译阶段器识别作用。

完整打包例子 https://github.com/muyiwei/Typescript-

 

posted @ 2020-07-15 20:02  菜鸟木易  阅读(509)  评论(0编辑  收藏  举报