为什么 VS 代码说我的对象 属性 有错误?
Why does VS code say there is an error with my object property?
我正在测试一些使用 TypeScript 中的对象的代码,并注意到我的 IDE 的 IntelliSense 为我尝试添加的新 属性 抛出错误。它声明 属性 “文本”不存在,这是我的代码:
// create new object
var thing : Object = new Object();
// Do things
thing.text = "This is a test.";
console.log(thing.text);
// dereference the object
thing = null;
错误在以下行突出显示:
thing.text = "This is a test.";
console.log(thing.text);
为什么在 JavaScript 中这是完全可以接受的代码和行为,但 VS 代码将其列为错误?这是我的编辑器的错误截图:
Error
编辑:我应该注意到代码确实用 tsc 编译成有效的 JS 并且运行得很好,只是好奇为什么会出现错误,因为它在编写代码时让我失望并且让我觉得当那没有。它还在 tsc 的输出中注意到相同的错误,这种能够向对象添加和删除属性的语言行为是否从 JavaScript 更改为 TypeScript?
Typescript 类型不是您最终代码的一部分。当您 build/run 您的代码时,没有类型。在编程时,它们只是为了您的利益。所以你可以用不正确的类型编写有效的代码。 Typescript 会报错,但你的代码仍然 运行.
当您初始化变量时,您将其类型设置为 Object
。这基本上是 {}
。它没有任何属性。当您尝试为 thing.text
设置值时,它会给您一个错误,因为 thing
没有任何属性。
您有几个选择:
- 用
text
初始化 thing
:
const thing = { text: "This is a test." };
thing.text = "You can change the value if you want.";
console.log(thing.text);
注意,你不需要定义thing
的类型。 Typescript 通过它的值知道它的类型。
- 或,为
thing
声明一个类型,其中text
是可选的:
type ThingType = {
text?: string;
};
// or just: const thing: ThingType = {}
const thing: ThingType = new Object();
thing.text = "This is a test.";
console.log(thing.text);
我正在测试一些使用 TypeScript 中的对象的代码,并注意到我的 IDE 的 IntelliSense 为我尝试添加的新 属性 抛出错误。它声明 属性 “文本”不存在,这是我的代码:
// create new object
var thing : Object = new Object();
// Do things
thing.text = "This is a test.";
console.log(thing.text);
// dereference the object
thing = null;
错误在以下行突出显示:
thing.text = "This is a test.";
console.log(thing.text);
为什么在 JavaScript 中这是完全可以接受的代码和行为,但 VS 代码将其列为错误?这是我的编辑器的错误截图: Error
编辑:我应该注意到代码确实用 tsc 编译成有效的 JS 并且运行得很好,只是好奇为什么会出现错误,因为它在编写代码时让我失望并且让我觉得当那没有。它还在 tsc 的输出中注意到相同的错误,这种能够向对象添加和删除属性的语言行为是否从 JavaScript 更改为 TypeScript?
Typescript 类型不是您最终代码的一部分。当您 build/run 您的代码时,没有类型。在编程时,它们只是为了您的利益。所以你可以用不正确的类型编写有效的代码。 Typescript 会报错,但你的代码仍然 运行.
当您初始化变量时,您将其类型设置为 Object
。这基本上是 {}
。它没有任何属性。当您尝试为 thing.text
设置值时,它会给您一个错误,因为 thing
没有任何属性。
您有几个选择:
- 用
text
初始化thing
:
const thing = { text: "This is a test." };
thing.text = "You can change the value if you want.";
console.log(thing.text);
注意,你不需要定义thing
的类型。 Typescript 通过它的值知道它的类型。
- 或,为
thing
声明一个类型,其中text
是可选的:
type ThingType = {
text?: string;
};
// or just: const thing: ThingType = {}
const thing: ThingType = new Object();
thing.text = "This is a test.";
console.log(thing.text);