*Introduction to Symbols Using Type Script *
Symbols are a unique data type in TypeScript that allows for the creation of unambiguous and immutable values. Unlike other primitive data types such as strings, numbers, and booleans, symbols are not coercible and cannot be converted to other types. They are often used to create private members of classes and to define constants that cannot be changed.
Creating a symbol in Type Script is simple, using the Symbol() function. The function takes an optional string parameter that serves as a description of the symbol, but this parameter has no impact on the value of the symbol itself.
const mySymbol = Symbol();
Symbols can be used as property keys in objects, using square bracket notation.
const myObject = {
};
This allows for the creation of private members in classes, as symbols cannot be accessed from outside the class.
class MyClass {
private [mySymbol] = 'secret';
public getSecret(): string {
return this[mySymbol];
}
}
const myClassInstance = new MyClass();
console.log(myClassInstance.getSecret()); // 'secret'
console.log(myClassInstance[mySymbol]); // ERROR: Property 'Symbol()' does not exist on type 'MyClass'
Symbols can also be used to define constants, to ensure that the value cannot be changed or overwritten.
const MY_CONSTANT = Symbol();
function myFunction(input: symbol) {
if (input === MY_CONSTANT) {
console.log('This is my constant');
} else {
console.log('This is not my constant');
}
}
myFunction(MY_CONSTANT); // 'This is my constant'
myFunction(Symbol()); // 'This is not my constant'
In conclusion, symbols are a powerful feature of TypeScript that can be used to create unambiguous and immutable values, and to define private members and constants. They are particularly useful in object-oriented programming, where they can be used to ensure encapsulation and protect sensitive data.
Top comments (1)
Symbols are a feature of JS, not TS