@rbxts/jsnatives
Version:
A TypeScript library for Roblox that provides JavaScript-like native functionality, including Proxy, Object utilities, setTimeout/setInterval, JSON, and more.
46 lines (37 loc) • 1.25 kB
TypeScript
type SymbolCallable = {
(name: string): symbol
}
declare interface SymbolConstructor extends SymbolCallable {
/**
* Creates a new symbol.
* @param name - The name of the symbol.
* @returns A new symbol.
*/
new(name: string): symbol
/**
* Returns a symbol from a string. (Mimics JavaScript's `Symbol.for`) using global registry.
* @param key - The key of the symbol.
* @returns A symbol.
*/
for(key: string): symbol
/**
* Checks if the given value is a symbol.
* @param value - The value to check.
* @returns Whether the value is a symbol.
*/
isSymbol(value: any): value is symbol
}
declare const Symbol: SymbolConstructor
declare global {
interface WeakMapWithSymbol<K extends object | symbol, V> extends Map<K, V> {}
interface WeakMapConstructor {
new<K extends object | symbol, V>(): WeakMapWithSymbol<K, V>
new<K extends object | symbol, V>(entries: ReadonlyArray<[K, V]>): WeakMapWithSymbol<K, V>
}
interface WeakSetWithSymbol<T extends object | symbol> extends Set<T> {}
interface WeakSetConstructor {
new<T extends object | symbol>(): WeakSetWithSymbol<T>
new<T extends object | symbol>(values: ReadonlyArray<T>): WeakSetWithSymbol<T>
}
}
export default Symbol