# Typing in Psalm Psalm is able to interpret all PHPDoc type annotations, and use them to further understand the codebase. Types are used to describe acceptable values for properties, variables, function parameters and `return $x`. ## Docblock Type Syntax Psalm allows you to express a lot of complicated type information in docblocks. All docblock types are either [atomic types](type_syntax/atomic_types.md), [union types](type_syntax/union_types.md) or [intersection types](type_syntax/intersection_types.md). Additionally Psalm supports PHPDoc’s [type syntax](https://docs.phpdoc.org/latest/guide/guides/types.html), and also the [proposed PHPDoc PSR type syntax](https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md#appendix-a-types). ## Property declaration types vs Assignment typehints You can use the `/** @var Type */` docblock to annotate both [property declarations](http://php.net/manual/en/language.oop5.properties.php) and to help Psalm understand variable assignment. ### Property declaration types You can specify a particular type for a class property declaration in Psalm by using the `@var` declaration: ```php foo = $some_variable;`, Psalm will check to see whether `$some_variable` is either `string` or `null` and, if neither, emit an issue. If you leave off the property type docblock, Psalm will emit a `MissingPropertyType` issue. ### Assignment typehints Consider the following code: ```php