In your example, you can’t.
Per the Codex,
[
is_single()
] checks if a single post of any post type except attachment and page post types is being displayed.
You’re trying to use it on the transition_post_status
hook, which is not related to page display, and so is_single()
has no meaning.
The Solution
Instead of using is_single()
, use get_post_type()
:
if( 'post' == get_post_type( $post ) ) {
// code goes here
}