Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Type aliasing

From Wikipedia, the free encyclopedia

Type aliasing is a feature in some programming languages that allows creating a reference to a type using another name. It does not create a new type hence does not increase type safety. It can be used to shorten a long name. Languages allowing type aliasing include: C++, C# Crystal, D, Dart, Elixir, Elm, F#, Go, Hack, Haskell, Julia, Kotlin, Nim, OCaml, Python, Rust, Scala, Swift and TypeScript.

Example

[edit]

C++

[edit]

C++ features type aliasing with the using keyword.

using Distance = int;

C#

[edit]

C# version 12 and higher supports type aliasing with the using keyword. Earlier versions restrict its use to file-local scope or specific import contexts..[1]

using Distance = int;

Crystal

[edit]

Crystal features type aliasing using the alias keyword.[2]

alias Distance = Int32;

D

[edit]

D features type aliasing using the alias keyword.[3]

alias Distance = int;

Dart

[edit]

Dart features type aliasing using the typedef keyword.[4]

typedef Distance = int;

Elixir

[edit]

Elixir features type aliasing using @type.[5]

@type Distance :: integer

Elm

[edit]

Elm features type aliasing using type alias.

type alias Distance = Int

F#

[edit]

F3 features type aliasing using the type keyword.

type Distance = int

Go

[edit]

Go features type aliasing using the type keyword and =.

type Distance = int

Hack

[edit]

Hack features type aliasing using the newtype keyword.[6] Functionally, this creates a new, distinct type that is incompatible with its underlying type (int). This is stricter than a simple alias, which is generally transparent and interchangeable with the original type.

newtype Distance = int;

Haskell

[edit]

Haskell features type aliasing using the type keyword.[7]

type Distance = Int;

Julia

[edit]

Julia features type aliasing.[8] The use of const is best practice (though not strictly required for aliasing). It prevents the alias from being rebound to a different type later in the program, ensuring the alias is stable.

const Distance = Int

Kotlin

[edit]

Kotlin features type aliasing using the typealias keyword.[9]

typealias Distance = Int

Nim

[edit]

Nim features type aliasing.[10]

type
  Distance* = int

OCaml

[edit]

OCaml features type aliasing.[11]

type distance = int

Python

[edit]

Python features type aliasing.[12]

Vector = list[float]

Type aliases may be marked with TypeAlias to make it explicit that the statement is a type alias declaration, not a normal variable assignment. The use of : TypeAlias (from PEP 613) is not required for the alias to function, but it explicitly tells static type checkers (like Mypy) that the assignment is a type declaration, not a runtime variable assignment.

from typing import TypeAlias

Vector: TypeAlias = list[float]

Rust

[edit]

Rust features type aliasing using the type keyword.[13]

type Point = (u8, u8);

Scala

[edit]

Scala can create type aliases using opaque types.[14]

object Logarithms:
  opaque type Logarithm = Double

Swift

[edit]

Swift features type aliasing using the typealias keyword.

typealias Distance = Int;

TypeScript

[edit]

TypeScript features type aliasing using the type keyword.[15]

type Distance = number;

Zig

[edit]

Zig features type aliasing by assigning a data type to a constant.[16]

const distance = u32;

References

[edit]
  1. "Alias any type - C# 12.0 draft feature specifications". learn.microsoft.com. 16 August 2023. Retrieved 23 February 2024.
  2. "alias - Crystal". crystal-lang.org. Retrieved 21 February 2024.
  3. "Alias Alias - D Programming Language". dlang.org. Retrieved 18 June 2023.
  4. "Typedefs". dart.dev. Retrieved 18 June 2023.
  5. "Typespecs and behaviours". elixir-lang.github.com. Retrieved 23 June 2023.
  6. "Types: Type Aliases". docs.hhvm.com. Retrieved 18 June 2023.
  7. "Type synonym - HaskellWiki". wiki.haskell.org. Retrieved 18 June 2023.
  8. "Types · The Julia Language". docs.julialang.org. Retrieved 23 June 2023.
  9. "Type aliases | Kotlin". Kotlin Help. Retrieved 18 June 2023.
  10. "Nim by Example - Types". nim-by-example.github.io. Retrieved 21 June 2023.
  11. "OCaml reference manual". ocaml.org. Retrieved 23 April 2024.
  12. "typing — Support for type hints". Python documentation. Python Software Foundation. Retrieved 18 June 2023.
  13. "Type aliases - The Rust Reference". doc.rust-lang.org. Retrieved 18 June 2023.
  14. "Opaque Types". Scala Documentation. Retrieved 18 June 2023.
  15. "Documentation - Everyday Types". www.typescriptlang.org. Retrieved 18 June 2023.
  16. "Documentation - The Zig Programming Language". ziglang.org. Retrieved 14 October 2024.