or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

arrays.mdbig-numbers.mdcompact.mddata-conversion.mdformatting.mdindex.mdobjects.mdstrings.mdsystem.mdtype-checking.md

type-checking.mddocs/

0

# Type Checking Utilities

1

2

Comprehensive runtime type validation utilities for JavaScript/TypeScript applications, providing 28 functions to check data types, formats, and object characteristics with full type guard support.

3

4

## Capabilities

5

6

### Basic Type Checking

7

8

Core type validation functions with TypeScript type guards.

9

10

```typescript { .api }

11

/**

12

* Checks if value is a string

13

*/

14

function isString(value: unknown): value is string;

15

16

/**

17

* Checks if value is a number (excluding NaN)

18

*/

19

function isNumber(value: unknown): value is number;

20

21

/**

22

* Checks if value is a boolean

23

*/

24

function isBoolean(value: unknown): value is boolean;

25

26

/**

27

* Checks if value is an array

28

*/

29

function isArray(value: unknown): value is unknown[];

30

31

/**

32

* Checks if value is an object (excluding null and arrays)

33

*/

34

function isObject(value: unknown): value is Record<string, unknown>;

35

36

/**

37

* Checks if value is a function

38

*/

39

function isFunction(value: unknown): value is Function;

40

41

/**

42

* Checks if value is null

43

*/

44

function isNull(value: unknown): value is null;

45

46

/**

47

* Checks if value is undefined

48

*/

49

function isUndefined(value: unknown): value is undefined;

50

51

/**

52

* Checks if value is an Error instance

53

*/

54

function isError(value: unknown): value is Error;

55

```

56

57

### Specialized Type Checking

58

59

Advanced type checking for specific data types and formats.

60

61

```typescript { .api }

62

/**

63

* Checks if value is a BigInt

64

*/

65

function isBigInt(value: unknown): value is bigint;

66

67

/**

68

* Checks if value is a BN (big number) instance

69

*/

70

function isBn(value: unknown): value is BN;

71

72

/**

73

* Checks if value is a Uint8Array

74

*/

75

function isU8a(value: unknown): value is Uint8Array;

76

77

/**

78

* Checks if value is a Buffer

79

*/

80

function isBuffer(value: unknown): value is Buffer;

81

82

/**

83

* Checks if value is a Promise

84

*/

85

function isPromise(value: unknown): value is Promise<unknown>;

86

87

/**

88

* Checks if value is an Observable (RxJS-like)

89

*/

90

function isObservable(value: unknown): value is Observable;

91

```

92

93

### Format Validation

94

95

Functions for validating string formats and data structures.

96

97

```typescript { .api }

98

/**

99

* Checks if string is valid hexadecimal

100

* @param value - String to check

101

* @param bitLength - Expected bit length (optional)

102

* @param ignoreLength - Whether to ignore length validation

103

*/

104

function isHex(value: unknown, bitLength?: number, ignoreLength?: boolean): value is HexString;

105

106

/**

107

* Checks if string contains only ASCII characters

108

*/

109

function isAscii(value: unknown): value is string;

110

111

/**

112

* Checks if Uint8Array contains valid UTF-8 data

113

*/

114

function isUtf8(value: Uint8Array): boolean;

115

116

/**

117

* Checks if string is a valid IP address (IPv4 or IPv6)

118

*/

119

function isIp(value: unknown): value is string;

120

121

/**

122

* Checks if value is a valid JSON object

123

*/

124

function isJsonObject(value: unknown): value is Record<string, unknown>;

125

126

/**

127

* Checks if value is compact encoded (SCALE)

128

*/

129

function isCompact(value: unknown): boolean;

130

```

131

132

### Class and Instance Checking

133

134

Utilities for checking class relationships and instances.

135

136

```typescript { .api }

137

/**

138

* Checks if value is a class constructor

139

*/

140

function isClass(value: unknown): value is Class;

141

142

/**

143

* Checks if value is an instance of specified constructor

144

* @param value - Value to check

145

* @param clazz - Constructor function

146

*/

147

function isInstanceOf(value: unknown, clazz: Class): boolean;

148

149

/**

150

* Checks if child class extends parent class

151

* @param Child - Child class constructor

152

* @param Parent - Parent class constructor

153

*/

154

function isChildClass(Child: Class, Parent: Class): boolean;

155

```

156

157

### Method Interface Checking

158

159

Functions to check if objects implement specific method interfaces.

160

161

```typescript { .api }

162

/**

163

* Checks if object has toBn method

164

*/

165

function isToBn(value: unknown): value is ToBn;

166

167

/**

168

* Checks if object has toBigInt method

169

*/

170

function isToBigInt(value: unknown): value is ToBigInt;

171

172

/**

173

* Checks if object has codec methods (toHex, toU8a, etc.)

174

*/

175

function isCodec(value: unknown): boolean;

176

```

177

178

### Environment and System Checking

179

180

Platform and environment detection utilities.

181

182

```typescript { .api }

183

/**

184

* Checks if running on RISC-V architecture

185

*/

186

function isRiscV(): boolean;

187

188

/**

189

* Checks if chain is a test chain (based on genesis hash)

190

*/

191

function isTestChain(genesisHash: string | Uint8Array): boolean;

192

193

/**

194

* Checks if value is a WebAssembly module

195

*/

196

function isWasm(value: unknown): value is WebAssembly.Module;

197

```

198

199

## Usage Examples

200

201

**Basic Type Validation:**

202

203

```typescript

204

import { isString, isNumber, isHex, isU8a } from "@polkadot/util";

205

206

function processData(input: unknown) {

207

if (isString(input)) {

208

// TypeScript knows input is string here

209

return input.toUpperCase();

210

}

211

212

if (isNumber(input)) {

213

// TypeScript knows input is number here

214

return input * 2;

215

}

216

217

throw new Error("Invalid input type");

218

}

219

```

220

221

**Format Validation:**

222

223

```typescript

224

import { isHex, isU8a, hexToU8a } from "@polkadot/util";

225

226

function convertToBytes(input: string | Uint8Array): Uint8Array {

227

if (isU8a(input)) {

228

return input;

229

}

230

231

if (isHex(input)) {

232

return hexToU8a(input);

233

}

234

235

throw new Error("Input must be hex string or Uint8Array");

236

}

237

```

238

239

**Interface Checking:**

240

241

```typescript

242

import { isToBn, bnToBn } from "@polkadot/util";

243

244

function convertToBn(value: unknown) {

245

if (isToBn(value)) {

246

// Value has toBn() method

247

return value.toBn();

248

}

249

250

// Fallback to general conversion

251

return bnToBn(value);

252

}

253

```

254

255

## Types

256

257

```typescript { .api }

258

interface Observable {

259

next(value?: unknown): unknown;

260

}

261

262

interface Class<T = unknown> {

263

new (...args: unknown[]): T;

264

}

265

266

interface ToBn {

267

toBn(): BN;

268

}

269

270

interface ToBigInt {

271

toBigInt(): bigint;

272

}

273

274

type HexString = `0x${string}`;

275

```