Typeof

Материал из Циклопедии
Перейти к навигации Перейти к поиску

typeof (также typeOf или TypeOf) — это оператор, предоставляемый некоторыми языками программирования для определения типа данных переменной. Это полезно для создания программ, которые должны принимать несколько типов данных без указания самого типа.

В языках, которые поддерживают полиморфизм и преобразование типов, может иметь два варианта реализации. В некоторых языках, таких как Visual Basic[1], оператор typeof возвращает динамический тип объекта. В таких языках этот оператор получает информацию в runtime. В других языках, таких как C#[2] или D[3] и, в некоторой степени, в Си (как часть нестандартного расширения),[4][5] оператор typeof возвращает статический тип операнда. Эти языки могут иметь другие операторы для получения информации в runtime, такие как typeid.

Примеры[править]

В нестандартном (GNU) расширении языка программирования Си, typeof может быть использован, например, для определения макроса max:<syntaxhighlight lang="c">

  1. define max(a,b) ({ typeof (a) _a = (a); typeof (b) _b = (b); _a > _b ? _a : _b; })

</syntaxhighlight>В C#:<syntaxhighlight lang="c#"> // Возвращает является ли объект целым числом public static bool IsInteger(object o) {

 return ( o.GetType() == typeof(int) );

} </syntaxhighlight>

В JavaScript:<syntaxhighlight lang="javascript"> function isNumber(n) {

 return ( typeof n === 'number' );

} </syntaxhighlight> В TypeScript:[6] <syntaxhighlight lang="typescript"> function (param: typeof existingObject) { ... } </syntaxhighlight> <syntaxhighlight lang="typescript"> let newObject: typeof existingObject; </syntaxhighlight>

См. также[править]

Примечания[править]

  1. https://msdn.microsoft.com/en-us/library/0ec5kw18(VS.80).aspx Архивная копия от 28 ноября 2016 на Wayback Machine «TypeOf Operator (Visual Basic)» in MSDN
  2. https://msdn.microsoft.com/en-us/library/58918ffs(VS.80).aspx Архивная копия от 10 сентября 2016 на Wayback Machine «typeof (C#)» in MSDN
  3. Declarations - D Programming Language 1.0 - Digital Mars. Архивировано из первоисточника 7 апреля 2022. Проверено 27 апреля 2022.
  4. https://gcc.gnu.org/onlinedocs/gcc/Typeof.html Архивная копия от 9 мая 2022 на Wayback Machine «Typeof» in Using the GNU Compiler Collection
  5. Meneide, JeanHeyd Not-So-Magic - typeof(…) in C | r2. www.open-std.org (2021-03-07). Архивировано из первоисточника 19 апреля 2021. Проверено 2 декабря 2021.
  6. Using `typeof` to infer a typeангл.. Learn TypeScript. Архивировано из первоисточника 12 апреля 2022. Проверено 28 января 2022.