如何在TypeScript中使用delete运算符?
你有没有尝试过在TypeScript中删除对象属性?那么你肯定遇到过“delete”运算符。
在TypeScript中,delete运算符只允许删除未定义的、可选的或任何类型的对象属性。此外,它根据是否删除属性返回布尔值。
下面,我们将通过不同的例子来了解delete运算符在TypeScript中的不同用例。
使用Delete运算符删除对象属性
delete运算符的主要用途是删除对象的可选属性。我们可以使用delete关键字作为运算符,并将对象属性作为操作数的值。使用delete关键字删除对象属性会删除对象属性及其值。
语法
用户可以按照以下语法使用delete运算符。我们使用对象属性作为delete运算符的操作数。
let object: { property1?: string; property2: string } = { property1: "value1", property2: "value2", }; delete object.property1;
步骤
步骤1 − 使用“interface”关键字创建一个名为objectInteface的接口。
步骤2 − 在接口中定义属性及其类型。我们将prop1定义为字符串类型,prop2定义为布尔类型(且为可选),prop3定义为数字类型。
步骤3 − 定义名为obj的objectInterface类型的对象,并初始化对象属性值。
步骤4 − 尝试使用delete运算符删除prop1,它将引发错误,因为它不是可选属性或任何类型的属性。
步骤5 − 现在,使用delete运算符删除prop2。我们可以毫无错误地删除它,并且它在成功删除后返回true值。
示例1
在下面的示例中,我们使用了delete运算符来删除对象的可选属性。
在输出中,我们可以看到它在属性及其值删除时返回true。此外,当我们在删除后打印对象属性时,它会打印undefined。
// Inteface for the objects // prop2 is an optional interface objectInterface { prop1: string; prop2?: boolean; prop3: number; } // defining the object of type objectInteface let obj: objectInterface = { prop1: "TutorialsPoint", prop2: true, prop3: 30, }; // delete the prop2 of obj console.log("Deleting the prop2 optional property of the obj."); console.log(console.log(delete obj.prop2)); console.log( "Value of the prop2 property of obj, after deleting it is " + obj.prop2 );
编译后,它将生成以下JavaScript代码:
// defining the object of type objectInteface var obj = { prop1: "TutorialsPoint", prop2: true, prop3: 30 }; // delete the prop2 of obj console.log("Deleting the prop2 optional property of the obj."); console.log(console.log(delete obj.prop2)); console.log("Value of the prop2 property of obj, after deleting it is " + obj.prop2);
输出
以上代码将产生以下输出:
Deleting the prop2 optional property of the obj. true undefined Value of the prop2 property of obj, after deleting it is undefined
示例2
在下面的示例中,我们创建了一个名为sample的任意类型的对象。这意味着每个属性都可以是任意类型,这也包括可选和未定义的。
用户可以看到我们没有单独声明sample对象的任何属性为可选。但是,我们仍然可以删除它们,因为整个对象是可选的。
// Creating the sample object of type any let sample: any = { key: true, road_color: "black", total: 900, }; // deleting the sample object's properties console.log("Deleting the total property "); console.log(delete sample.total); console.log("Deleting the whole object"); console.log(delete sample.road_color);
编译后,它将生成以下JavaScript代码:
// Creating the sample object of type any var sample = { key: true, road_color: "black", total: 900 }; // deleting the sample object's properties console.log("Deleting the total property "); console.log(delete sample.total); console.log("Deleting the whole object"); console.log(delete sample.road_color);
输出
以上代码将产生以下输出:
Deleting the total property true Deleting the whole object true
使用Delete运算符删除全局变量
delete运算符只允许对象属性作为操作数,但全局变量是window对象的属性。因此,我们可以使用delete运算符删除全局变量。
此外,假设我们直接使用全局变量作为delete运算符的操作数。在这种情况下,它将引发类似于“delete运算符的操作数必须是属性引用”的错误消息。为了消除错误,我们将使用“this”关键字作为全局变量的引用,它指的是全局对象。
语法
用户可以按照以下语法使用delete运算符删除全局变量。
var gloabl_var1: undefined; console.log(delete this.gloabl_var1);
这里var1是一个需要向下取整的值。
示例
在这个例子中,我们正在使用delete运算符删除gloabl_var1。我们使用了this关键字作为gloabl_var1的引用,以便将全局变量用作window对象的属性。
在输出中,我们看到delete运算符返回true,这意味着全局变量已成功删除。但是,它的值仍然相同,因为即使在删除后,内存也会保留全局变量的值。
// To delete global variables, it must be optional or type of any var gloabl_var1: number | undefined = 6054; console.log("Deleting the global_var1"); // use this keyword to access global_var1 as a property of the window object console.log(delete this.gloabl_var1); console.log( "After deleting the global_var1, observing its value which is " + gloabl_var1 );
编译后,它将生成以下JavaScript代码:
// To delete global variables, it must be optional or type of any var gloabl_var1 = 6054; console.log("Deleting the global_var1"); // use this keyword to access global_var1 as a property of the window object console.log(delete this.gloabl_var1); console.log("After deleting the global_var1, observing its value which is " + gloabl_var1);
输出
以上代码将产生以下输出:
Deleting the global_var1 true After deleting the global_var1, observing its value which is 6054
使用Delete运算符删除数组值
由于数组是对象的实例,我们可以使用delete运算符删除数组值。我们可以使用单个数组元素作为delete运算符的操作数。
语法
用户可以按照以下语法使用delete运算符删除数组值。在这里,我们不需要使数组属性可选。
let arr: Array<number> = [10,20]; console.log(delete arr[index]);
示例
此示例演示了使用delete运算符删除数组值。我们定义了字符串数组并从第一个和第二个索引删除了值。
此外,我们可以在输出中看到message数组中第一个和第二个索引的值变为undefined。
let message: Array<string> = ["Welcome", "To", "The", "TutorialsPoint", "!"]; console.log("Deleting the second and third value of the array respectively."); console.log(delete message[1]); console.log(delete message[2]); console.log("After deleting the second and third value of the array is"); console.log(message[1]); console.log(message[2]);
编译后,它将生成以下JavaScript代码:
var message = ["Welcome", "To", "The", "TutorialsPoint", "!"]; console.log("Deleting the second and third value of the array respectively."); console.log(delete message[1]); console.log(delete message[2]); console.log("After deleting the second and third value of the array is"); console.log(message[1]); console.log(message[2]);
输出
以上代码将产生以下输出:
Deleting the second and third value of the array respectively. true true After deleting the second and third value of the array is undefined undefined
我们学习了如何将delete运算符与普通对象、全局变量和数组一起使用。用户需要注意,他们只能使用delete运算符删除对象的可选属性。否则,它将引发错误。
此外,用户可以将delete运算符与任何变量一起使用,该变量是对象的实例。我们可以创建函数的对象,并可以删除函数的属性。