# Safe Casts
> Return a list of array [data types][@stdlib/array/dtypes] to which a provided array [data type][@stdlib/array/dtypes] can be safely cast.
## Usage
```javascript
var safeCasts = require( '@stdlib/array/safe-casts' );
```
#### safeCasts( \[dtype] )
If provided a `dtype` argument, returns a list of array [data types][@stdlib/array/dtypes] to which a provided array [data type][@stdlib/array/dtypes] can be safely cast.
```javascript
var out = safeCasts( 'float32' );
// e.g., returns [ 'float32', 'float64', 'generic' ]
```
If not provided a `dtype` argument, the function returns a casting table.
```javascript
var out = safeCasts();
// returns {...}
var f32 = out[ 'float32' ];
// returns {...}
var v = f32[ 'float64' ];
// returns 1
```
If provided an unrecognized or unsupported `dtype`, the function returns `null`.
```javascript
var out = safeCasts( 'foo' );
// returns null
```
## Examples
```javascript
var dtypes = require( '@stdlib/array/dtypes' );
var safeCasts = require( '@stdlib/array/safe-casts' );
var DTYPES;
var list;
var i;
// Get the list of supported array data types:
DTYPES = dtypes();
// Print the list of array data types to which a data type can be safely cast...
for ( i = 0; i < DTYPES.length; i++ ) {
list = safeCasts( DTYPES[ i ] );
console.log( '%s: %s', DTYPES[ i ], list.join( ', ' ) );
}
```
[@stdlib/array/dtypes]: https://www.npmjs.com/package/@stdlib/array/tree/main/dtypes