gpt4 book ai didi

typescript 类型错误 : Unable to get property 'split' of undefined or null reference

转载 作者:搜寻专家 更新时间:2023-10-30 21:18:24 25 4
gpt4 key购买 nike

我正在尝试使用以下方法从字符串中提取单词:

export class AddContactCtrl implements IAddContactCtrl {

middleNamesString: string;

saveContact() {
var middleNames : string[] = this.middleNamesString.split(" ");
}
}

但是,我收到以下错误:

TypeError: Unable to get property 'split' of undefined or null reference

为什么会这样? this.middleNamesStringstring 类型,应该有split() 方法,却返回null/undefined?我怀疑这与我使用 this 的方式有关,但我不确定为什么。

我试过删除 middleNames 字符串数组类型,但没有效果。如果我将它更改为局部变量,它确实有效:

var randomString = "Random Name";
var middleNames : string[] = randomString.split(" ");

但为什么呢?

最佳答案

你看过发射的 JS 了吗?有两种可能性。

首先是您永远不会为 middleNamesString 赋值。对于从 TypeScript 类发出的 JS,成员在用值(或占位符如 undefinednull)初始化之前不存在。如果你还没有给middleNamesString赋值,那么它就是undefined,你不能在上调用.split() >未定义

另一种可能性是,根据您调用方法的方式,this 指向全局范围(例如 window 对象,如果您的代码正在运行在浏览器中。)在这种情况下,您想要使用箭头函数,它将重写对 this 的调用以指向 TypeScript(和 ES6)中的当前类实例。

saveContact = () => {
var middleNames : string[] = this.middleNamesString.split(" ");
}

这仍然假设 middleNamesString 在调用 saveContact 之前已经被赋值。

关于 typescript 类型错误 : Unable to get property 'split' of undefined or null reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com