Type aliasing
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
C++
C++ features type aliasing with the using keyword.
using Distance = int;
C#
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
Crystal features type aliasing using the alias keyword.[2]
alias Distance = Int32;
D
D features type aliasing using the alias keyword.[3]
alias Distance = int;
Dart
Dart features type aliasing using the typedef keyword.[4]
typedef Distance = int;
Elixir
Elixir features type aliasing using @type.[5]
@type Distance :: integer
Elm
Elm features type aliasing using type alias.
type alias Distance = Int
F#
F3 features type aliasing using the type keyword.
type Distance = int
Go
Go features type aliasing using the type keyword and =.
type Distance = int
Hack
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
Haskell features type aliasing using the type keyword.[7]
type Distance = Int;
Julia
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
Kotlin features type aliasing using the keyword.[9]
typealias
typealias Distance = Int
Nim
Nim features type aliasing.[10]
type
Distance* = int
OCaml
OCaml features type aliasing.[11]
type distance = int
Python
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
Rust features type aliasing using the type keyword.[13]
type Point = (u8, u8);
Scala
Scala can create type aliases using opaque types.[14]
object Logarithms:
opaque type Logarithm = Double
Swift
Swift features type aliasing using the typealias keyword.
typealias Distance = Int;
TypeScript
TypeScript features type aliasing using the keyword.[15]
type
type Distance = number;
Zig
Zig features type aliasing by assigning a data type to a constant.[16]
const distance = u32;
References
- ^ "Alias any type - C# 12.0 draft feature specifications". learn.microsoft.com. 16 August 2023. Retrieved 23 February 2024.
- ^ "alias - Crystal". crystal-lang.org. Retrieved 21 February 2024.
- ^ "Alias Alias - D Programming Language". dlang.org. Retrieved 18 June 2023.
- ^ "Typedefs". dart.dev. Retrieved 18 June 2023.
- ^ "Typespecs and behaviours". elixir-lang.github.com. Retrieved 23 June 2023.
- ^ "Types: Type Aliases". docs.hhvm.com. Retrieved 18 June 2023.
- ^ "Type synonym - HaskellWiki". wiki.haskell.org. Retrieved 18 June 2023.
- ^ "Types · The Julia Language". docs.julialang.org. Retrieved 23 June 2023.
- ^ "Type aliases | Kotlin". Kotlin Help. Retrieved 18 June 2023.
- ^ "Nim by Example - Types". nim-by-example.github.io. Retrieved 21 June 2023.
- ^ "OCaml reference manual". ocaml.org. Retrieved 23 April 2024.
- ^ "typing — Support for type hints". Python documentation. Python Software Foundation. Retrieved 18 June 2023.
- ^ "Type aliases - The Rust Reference". doc.rust-lang.org. Retrieved 18 June 2023.
- ^ "Opaque Types". Scala Documentation. Retrieved 18 June 2023.
- ^ "Documentation - Everyday Types". www.typescriptlang.org. Retrieved 18 June 2023.
- ^ "Documentation - The Zig Programming Language". ziglang.org. Retrieved 14 October 2024.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.