    struct StateChangeEvent<T> where T : https://developers.home.google.com/reference/swift/GoogleHomeSDK/Protocols/Trait.html

A state change event for a given trait.
- `


  ### [typeID](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/StateChangeEvent#/s:13GoogleHomeSDK16StateChangeEventV6typeIDSSvp)


  ` The type ID of the trait that changed.

  #### Declaration

  Swift

      let typeID: String

- `


  ### [oldValue](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/StateChangeEvent#/s:13GoogleHomeSDK16StateChangeEventV8oldValuexSgvp)


  ` The previous value of the trait, if any.

  #### Declaration

  Swift

      let oldValue: T?

- `


  ### [newValue](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/StateChangeEvent#/s:13GoogleHomeSDK16StateChangeEventV8newValuexvp)


  ` The new value of the trait.

  #### Declaration

  Swift

      let newValue: T

- `


  ### [change(for:ignoreNilOldValue:)](https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/StateChangeEvent#/s:13GoogleHomeSDK16StateChangeEventV6change3for17ignoreNilOldValueAA0lE0Vyqd__GSgs7KeyPathCyxqd__G_SbtSQRd__s8SendableRd__lF)


  ` Computes strongly-typed changes for a specific property.

  Returns `nil` if the property did not change, or if there is no previous
  state and `ignoreNilOldValue` is `true`.

  #### Declaration

  Swift

      func change<Value>(for keyPath: KeyPath<T, Value>, ignoreNilOldValue: Bool = false) -> https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/ValueChange.html<Value>? where Value : Equatable, Value : Sendable

  #### Parameters

  |---|---|
  | ` ignoreNilOldValue ` | If `true`, returns `nil` when there is no previous state to compare against. |

  #### Return Value

  A `https://developers.home.google.com/reference/swift/GoogleHomeSDK/Structs/ValueChange.html` if the property changed, otherwise `nil`.