TYPESCRIPT 类 技术教程文章

javascript – TypeScript – 定义类型的子集【代码】

说我有这样的类型:interface IAll {foo: boolean,bar: Function,baz: number }而不是手动定义IAll的所有可能的子类型,如下所示:interface IAll1 {foo: boolean,bar: Function, }interface IAll2 {bar: Function,baz: number }interface IAll3 {foo: boolean, }interface IAll4 {foo: boolean, }…等等 然后做type IAll = IAll1 | IAll2 | IAll3 ... etc.有没有办法让TypeScript静态检查对象是否是另一个的子类型或子集? 这对于我...

javascript – 从typescript中的静态方法中检索类名【代码】

我试图从静态方法中检索类名.它适用于普通方法,但不适用于静态方法class MyNode{constructor(){var classname=this.constructor.toString().split ('(' || /s+/)[0].split (' ' || /s+/)[1];console.log(classname);}static a_static_method(){var classname=this.constructor.toString().split ('(' || /s+/)[0].split (' ' || /s+/)[1];console.log(classname);} } var obj=new MyNode(); // THIS WORKS, prints "MyNode" MyNod...

javascript – 为什么数组中的索引在TypeScript中打破了类型的安全性?【代码】

向JavaScript添加静态类型的重点是提供有关类型安全性的一些保证.我注意到数组索引似乎打破了类型安全性而没有使用像任何或非null断言运算符那样的任何脏技巧.let a: Array<number> = [1,2,3,4]; let b: number = a[4]; //undefined此代码不会导致任何TypeScript错误,即使很明显它会违反类型安全性.在我看来,阵列的类型< T>由index []操作的应该是类型T |未定义,但TypeScript编译器将其视为类型T. 经过进一步调查,我发现这种行为也...

javascript – Typescript导入导出的类发出require(…),这会产生浏览器错误【代码】

我已经google了一下,显然没有偶然发现这个解释.我正在撰写Typescript,最终目标是拥有一个.js文件(或众多),我可以通过HTML中的脚本标签来引用. button.ts... import * as BF fro "./button-form.ts"; ...……发出…… button.js... var BF = require("./button-form"); ...…由于未定义require(),因此无法在浏览器中运行. 同样… 按钮form.ts... export class ButtonForm { ...……发出…… 按钮form.js... exports.ButtonForm = Bu...

javascript – 从许多编译为AMD模块的TypeScript类创建单个AMD模块?【代码】

我正在尝试创建一个单独的AMD库(模块)文件,该文件是由许多小文件(编译为JavaScript-AMD模块的TypeScript文件)构建的. 问题是: >我在类之间有循环依赖关系. (家长需要知道孩子和孩子需要知道父母)>我想摆脱所有的define()和require()调用,除了“myLibrary”的主要定义 创建单个文件的主要原因: >加载时间(不应使用requirejs来引用所有小文件)> AMD模块无法(?)重新调整的循环依赖项 我的主要问题是: >有没有工具可以做到这一点?...

javascript – 如何在TypeScript中将类类型用作地图键?【代码】

我想在一个反映类的类型的键下的TypeScript(JavaScript)映射中存储一些信息.这是因为存储的数据实际上是静态的并且适用于每种类型,而不是每个实例. 这是我如何声明Map atm:private static followSetsByATN: Map<number, FollowSetsPerState> = new Map();但是,number应该是类类型.怎么能实现这一目标?解决方法:如果您有一个对象({})作为映射,那么键必须是字符串(或自动转换为字符串的数字).在这种情况下,您可以使用toString()方法...

为什么TypeScript编译器的创建者没有将类转换为使变量变为私有的JavaScript闭包【代码】

为什么typescript编译器会将类转换为闭包来实现数据隐藏?class Person {public name: string; private password: string;constructor(name:string,password: string) {this.name = name; this.password= password;} } let p = new Person("mihir","!@#123");在上面的代码中,我将密码保存为私有变量.所以我们不应该直接访问该变量.以下代码是从typescript代码编译的.密码变量保持公开,因为我们在javascript中没有访问修...

javascript – 如何在不丢失TypeScript类属性的情况下将JSON对象列表转换为TypeScript对象列表?【代码】

我有这个Customer类:export class Customer {id: number;company: string;firstName: string;lastName: string;name(): string {if (this.company)return this.company;if (this.lastName && this.firstName)return this.lastName + ", " + this.firstName;if (this.lastName)return this.lastName;if (this.firstName)return this.firstName;if (this.id > 0)return "#" + this.id;return "New Customer";} }在我的控制器中,我下...

javascript – 在TypeScript中动态返回类构造函数【代码】

我正在尝试在TypeScript中构建一个机制,以基于表示类名称的字符串参数返回类的新实例.基本上,我正在尝试创建一个工厂,只是我无法弄清楚如何在TypeScript中执行此操作.在纯JS中,我可以通过将所有类构造函数存储在键/值对象中并调用new ClassDictionary [className]()来解决这个问题. – 它不是最强大的解决方案,但它适用于这种情况.我似乎无法在TypeScript中获得正确的类型组合和强制转换.有没有更好的办法?我还没有在TypeScript中...

javascript – 使用Sweetcript与Typescript类【代码】

我在typescript类中有一个方法,看起来像这样var confirmation = confirm("Run Agent Job?");if (confirmation) {console.log('yes');} else {console.log('no');}我正在尝试将其转换为使用Sweet Alert,所以在方法中我只是把它.但是Typescript不承认这个它会抛出一个找不到名字的swalswal("hello");我已经导入甜蜜警报如下<link href="~/Content/css/sweetalert.css" rel="stylesheet" /> <script src="~/Scripts/sweetalert.min.js...

TypeScript--交叉类型【代码】

交叉类型是将多个类型合并为一个类型。 这让我们可以把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。示例interface Person {name: stringage: number }interface Student {school: string }// ?正确 const stu: Person & Student = {name: 'Tom',age: 23,school: 'Oxford', }// ?错误 // Property 'school' is missing in type ... const stu: Person & Student = {name: 'Tom',age: 23, }// ?错误 // Ty...

TypeScript更多用法-常见工具类型(Utility Types)

1、Partial 构造一个所有属性都Type设置为optional的类型。该实用程序将返回一个表示给定类型的所有子集的类型。 2、Required 构造一个类型,该类型由Typeset的所有属性设置为required 3、Readonly 构造一个所有属性都Type设置为的类型readonly,这意味着无法重新分配所构造类型的属性。 4、Record<Keys,Type> 构造一个对象类型,其属性键为Keys,属性值为Type。该实用程序可用于将一个类型的属性映射到另一个类型。 5、Pick<Type,...

TypeScript笔记(5)—— 基本数据类型【代码】【图】

TypeScript(5):基本数据类型1. let关键字 JavaScript中使用关键字var来声明变量有很多的缺陷,首先一个就是var作用域的问题。比如: for (var i = 0; i < 5; i++) {console.log('for循环内,迭代变量i=' + i)} console.log('for循环外:,迭代变量i=' + i)可想而知,由于使用var声明的变量作用域比较宽松,在for语句等一些语句中,由var声明的变量可能受到外部的干扰而导致运行到非预期的结果。 var在同一区域可以使用相同标识符...

typescript 数据类型【代码】

/* typeScript 中的数据类型booleannumberstringarraytuple 元组类型enum 枚举类型any 任意类型null 和 undefinedvoid 类型never 类型 */let str: string = 你好 // str = 1 //错误写法// 数组类型 ts 中定义数组有两种方式 // 第一种 let arr: number[] = [1, 2, 3]// 这里只能放 number 类型 let arr1: string[] = [2, 2, 3] // 第二种 let arr3: Array<number> = [11, 22, 3]// 泛型 let arr4: Array<string> = [ewqe, fdfd, ...

TypeScript------>类型保护【代码】

TypeScript能够在特定的区块中保证变量属于某种确定的类型。可以在此区块中放心的引用此类型的属性,或调用此类型的方法。 下面的例子中,因为我们不知道程序运行的时候到底会传入什么样的参数,所以必须在每一处加上类型断言,这显然不是一个理想的方案,代码可读性差,而类型保护就是用来解决这个问题的,它可以提前对类型进行怕判断 enum Type {Strong,Week} class Java{helloJava(){console.log("hello Java")} } class ...

Hello Typescript(04-函数类型接口、混合类型接口、类接口)【代码】

函数类型接口 // 接口 interface Add {(a: number, b: string): number; }// 实现具体的函数 let add: Add = (a, b) => a + b;混合类型接口因为 JavaScript 其动态灵活的特点,有时你会希望一个对象可以同时具有上面提到的多种类型。interface Lib {(): void; // 函数version: string; // 属性dosomething(): void; // 方法 } function getLib(version: string) {let lib = (() => {}) as Lib;lib.version = version || "1.0";lib....

TypeScript--泛型类【代码】

我们想用类来操作数据库,往里面添加数据。 这里先不使用泛型类,把类作为参数 /* 定义一个User的类这个类的作用就是映射数据库字段 然后定义一个 MysqlDb的类这个类用于操作数据库 然后把User类作为参数传入到MysqlDb中 */ class User {username: string | undefined;pasword: string | undefined; }class MysqlDb {add(user: User): boolean {console.log(user);return true;} } var u = new User(); u.username = "张三"; ...

TypeScript的静态类型【代码】【图】

码字不易,有帮助的同学希望能关注一下我的微信公众号:Code程序人生,感谢!代码自用自取。TypeScript 的一个最主要特点就是可以定义静态类型,英文是 Static Typing。那到底是什么意思那?太复杂的概念性东西这里就不讲了,你可以简单的理解“静态类型”为,就是你一旦定义了,就不可以再改变了。比如你是男人就是男人,一辈子都要作男人;是女人就是女人,一辈子都是女人。这个事不可以改变!呃…好像现在也可以随便变来变去啊,...