export class Month {
January: string;
February: string;
March: string;
...
}
mapMyPayload(specialMonths: Birthdays) {
let myMonth = new Month;
console.log(myMonth); //=> Month {}
// here I expect the Object.keys(myMonth)
// returns {January=undefined, February=undefined, ...}
// since I assume the new Month
// declares the myMonth as an object with undefined as its value
Object.keys(myMonth).forEach(m => {
// iterate thru the keys
// check if the month exists inside the specialMonths
// and is not null or undefined
if (specialMonths[m] != null) {
myMonth[m] = specialMonths[m];
);
return myMonth;
}
我查看了许多示例代码和文档,无论是隐式构造函数还是显式构造函数,您都可以通过使用类名前面的new
来声明新类,但随后它们会声明一些值。因此,我认为在某个外部作用域声明它之前,实例是不存在的。
class Foo {
a: string;
b: string;
c: number;
}
var foo = new Foo();
console.log(foo.a); //undefined
更新:这将转换为以下JS代码:
var Foo = /** @class */ (function () {
function Foo() {
}
return Foo;
}());
var foo = new Foo();
console.log(foo.a);
您的对象没有任何键,因为它们还没有定义,所以它们求助于“undefined”文字而不是“undefined”作为值。您可以尝试将“undefined”默认为值:
class Foo {
a: string = undefined;
b: string = undefined;
c: number = undefined;
}
var foo = new Foo();
console.log(foo.a); //undefined
console.log(foo); //=> Foo{a: undefined, b: undefined, c: undefined}
Object.keys(foo).forEach(property => console.log(property));
// keys log as empty and not undefined
这将传递到以下JS:
var Foo = /** @class */ (function () {
function Foo() {
this.a = undefined;
this.b = undefined;
this.c = undefined;
}
return Foo;
}());
var foo = new Foo();
console.log(foo.a); //undefined
console.log(foo); //=> Foo{a: undefined, b: undefined, c: undefined}
Object.keys(foo).forEach(function (property) { return console.log(property); });
// keys log as empty and not undefined as part of the forEach loop
主要内容:CalcThirdPartyJsLib.js 文件代码:,Calc.d.ts 文件代码:,CalcTest.ts 文件代码:,CalcTest.js 文件代码:,实例TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去掉后只保留导出类型声明,而产生了一个描述 JavaS
主要内容:类型断言(Type Assertion),类型推断,变量作用域变量是一种使用方便的占位符,用于引用计算机内存地址。 我们可以把变量看做存储数据的容器。 TypeScript 变量的命名规则: 变量名称可以包含数字和字母。 除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。 变量名不能以数字开头。 变量使用前必须先声明,我们可以使用 var 来声明变量。 我们可以使用以下四种方式来声明变量: 声明变量的类型及初始值: 例如: 声明变量的类型,
TypeScript 编译器会将程序中多个具有相同名称的声明合并为一个声明。 但这并不是说 TypeScript 会随意的合并两个名称相同的字符串变量,这显然是不符合语法规定的,那么本节将介绍什么样的声明可以进行合并。 1. 慕课解释 TypeScript 中的声明会创建以下三种实体之一:命名空间、类型或值。 来看以下声明都创建了什么实体: 声明类型 创建了命名空间 创建了类型 创建了值 Name
本节介绍 var let const 这三种变量的声明方式,重点讨论作用域与变量提升的相关知识点,这部分往往也是面试常考部分,需要多加注意。 说明: 在使用 TypeScript 进行变量声明时,一般建议添加对应的变量类型,由于本节是整个系列教程的第一节,还未介绍 TypeScript 的类型系统,所以本节的例子仍采用 JavaScript 的变量声明方式。虽然在变量声明时没有添加变量类型,但是
我试图实现的是从声明类型数组。 使用enum,我可以这样做: 输出将是 我想通过这种方式实现类似的目标: 输出类似: 有什么想法吗?我尝试了和。不幸的是,它不起作用。
今天,我意识到让数组像字典一样运行更有意义,这样我就可以通过名称而不是数字索引访问特定元素。我希望能够执行而不是(即使我声明了一个将submitButton映射到请求的索引的枚举)。 这是可行的,但我现在允许一堆欺骗我的代码库,这是很糟糕的。我希望对象知道,只有类型的东西才能放入其中。 我可以用这些字段声明一个类,因为我希望它们的数量在将来可以动态添加,所以下面的操作是不可行的。