diff --git a/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BootstrapSourceModelProviderTest.kt b/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BootstrapSourceModelProviderTest.kt
index 7911b3b..2244d57 100644
--- a/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BootstrapSourceModelProviderTest.kt
+++ b/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BootstrapSourceModelProviderTest.kt
@@ -16,7 +16,9 @@
 
 package com.android.tools.metalava.model.testsuite
 
+import com.android.tools.metalava.model.PrimitiveTypeItem
 import com.android.tools.metalava.testing.java
+import com.google.common.truth.Truth.assertThat
 import kotlin.test.assertEquals
 import kotlin.test.assertNotNull
 import org.junit.Test
@@ -503,4 +505,23 @@
             assertEquals(listOf(itf2Mtd1, itf1Mtd1), cls3Mtd1.superMethods())
         }
     }
+
+    @Test
+    fun `160 - check field type`() {
+        runSourceCodebaseTest(
+            java(
+                """
+                    package test.pkg;
+
+                    public class Test {
+                        public int field;
+                    }
+                """
+            ),
+        ) { codebase ->
+            val fieldTypeItem = codebase.assertClass("test.pkg.Test").assertField("field").type()
+            assertThat(fieldTypeItem).isInstanceOf(PrimitiveTypeItem::class.java)
+            assertEquals(PrimitiveTypeItem.Primitive.INT, (fieldTypeItem as PrimitiveTypeItem).kind)
+        }
+    }
 }
diff --git a/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineCodebaseInitialiser.kt b/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineCodebaseInitialiser.kt
index 047dc7e..c0c89ef 100644
--- a/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineCodebaseInitialiser.kt
+++ b/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineCodebaseInitialiser.kt
@@ -22,6 +22,7 @@
 import com.android.tools.metalava.model.DefaultAnnotationArrayAttributeValue
 import com.android.tools.metalava.model.DefaultAnnotationAttribute
 import com.android.tools.metalava.model.DefaultAnnotationSingleAttributeValue
+import com.android.tools.metalava.model.PrimitiveTypeItem.Primitive
 import com.google.common.collect.ImmutableList
 import com.google.common.collect.ImmutableMap
 import com.google.turbine.binder.Binder
@@ -41,8 +42,12 @@
 import com.google.turbine.model.Const.ArrayInitValue
 import com.google.turbine.model.Const.Kind
 import com.google.turbine.model.Const.Value
+import com.google.turbine.model.TurbineConstantTypeKind as PrimKind
 import com.google.turbine.tree.Tree.CompUnit
 import com.google.turbine.type.AnnoInfo
+import com.google.turbine.type.Type
+import com.google.turbine.type.Type.PrimTy
+import com.google.turbine.type.Type.TyKind
 import java.io.File
 import java.util.Optional
 import javax.lang.model.SourceVersion
@@ -277,6 +282,37 @@
         }
     }
 
+    private fun createType(type: Type): TurbineTypeItem {
+        return when (type.tyKind()) {
+            TyKind.PRIM_TY -> {
+                type as PrimTy
+                val annotations = createAnnotations(type.annos())
+                val modifiers = TurbineTypeModifiers(annotations)
+                when (type.primkind()) {
+                    PrimKind.BOOLEAN ->
+                        TurbinePrimitiveTypeItem(codebase, modifiers, Primitive.BOOLEAN)
+                    PrimKind.BYTE -> TurbinePrimitiveTypeItem(codebase, modifiers, Primitive.BYTE)
+                    PrimKind.CHAR -> TurbinePrimitiveTypeItem(codebase, modifiers, Primitive.CHAR)
+                    PrimKind.DOUBLE ->
+                        TurbinePrimitiveTypeItem(codebase, modifiers, Primitive.DOUBLE)
+                    PrimKind.FLOAT -> TurbinePrimitiveTypeItem(codebase, modifiers, Primitive.FLOAT)
+                    PrimKind.INT -> TurbinePrimitiveTypeItem(codebase, modifiers, Primitive.INT)
+                    PrimKind.LONG -> TurbinePrimitiveTypeItem(codebase, modifiers, Primitive.LONG)
+                    PrimKind.SHORT -> TurbinePrimitiveTypeItem(codebase, modifiers, Primitive.SHORT)
+                    else ->
+                        throw IllegalStateException("Invalid primitive type in API surface: $type")
+                }
+            }
+            else -> {
+                return TurbinePrimitiveTypeItem(
+                    codebase,
+                    TurbineTypeModifiers(emptyList()),
+                    Primitive.VOID
+                )
+            }
+        }
+    }
+
     /** This method sets up the inner class hierarchy. */
     private fun setInnerClasses(
         classItem: TurbineClassItem,
@@ -297,10 +333,12 @@
                 val annotations = createAnnotations(field.annotations()).toList()
                 val fieldModifierItem =
                     TurbineModifierItem.create(codebase, field.access(), annotations)
+                val type = createType(field.type())
                 TurbineFieldItem(
                     codebase,
                     field.name(),
                     classItem,
+                    type,
                     fieldModifierItem,
                 )
             }
diff --git a/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineFieldItem.kt b/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineFieldItem.kt
index 0b4532d..9de01cb 100644
--- a/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineFieldItem.kt
+++ b/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineFieldItem.kt
@@ -25,6 +25,7 @@
     override val codebase: Codebase,
     private val name: String,
     private val containingClass: TurbineClassItem,
+    private val type: TurbineTypeItem,
     override val modifiers: TurbineModifierItem,
 ) : TurbineItem(codebase, modifiers), FieldItem {
 
@@ -47,9 +48,7 @@
 
     override fun hashCode(): Int = name.hashCode()
 
-    override fun type(): TypeItem {
-        TODO("b/295800205")
-    }
+    override fun type(): TypeItem = type
 
     override fun duplicate(targetContainingClass: ClassItem): FieldItem {
         TODO("b/295800205")
diff --git a/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineTypeItem.kt b/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineTypeItem.kt
new file mode 100644
index 0000000..fe743bc
--- /dev/null
+++ b/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineTypeItem.kt
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.tools.metalava.model.turbine
+
+import com.android.tools.metalava.model.ClassItem
+import com.android.tools.metalava.model.Codebase
+import com.android.tools.metalava.model.Item
+import com.android.tools.metalava.model.PrimitiveTypeItem
+import com.android.tools.metalava.model.PrimitiveTypeItem.Primitive
+import com.android.tools.metalava.model.TypeItem
+import com.android.tools.metalava.model.TypeModifiers
+import java.util.function.Predicate
+
+sealed class TurbineTypeItem(
+    open val codebase: Codebase,
+    override val modifiers: TypeModifiers,
+) : TypeItem {
+
+    override fun asClass(): TurbineClassItem? = TODO("b/295800205")
+
+    override fun convertType(replacementMap: Map<String, String>?, owner: Item?): TypeItem =
+        TODO("b/295800205")
+
+    override fun markRecent() = TODO("b/295800205")
+
+    override fun scrubAnnotations() {
+        TODO("b/295800205")
+    }
+
+    override fun toErasedTypeString(context: Item?): String {
+        TODO("b/295800205")
+    }
+
+    override fun toTypeString(
+        outerAnnotations: Boolean,
+        innerAnnotations: Boolean,
+        erased: Boolean,
+        kotlinStyleNulls: Boolean,
+        context: Item?,
+        filter: Predicate<Item>?,
+    ): String = TODO("b/295800205")
+
+    override fun typeArgumentClasses(): List<ClassItem> = TODO("b/295800205")
+}
+
+class TurbinePrimitiveTypeItem(
+    override val codebase: Codebase,
+    override val modifiers: TypeModifiers,
+    override val kind: Primitive,
+) : PrimitiveTypeItem, TurbineTypeItem(codebase, modifiers) {}
diff --git a/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineTypeModifiers.kt b/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineTypeModifiers.kt
new file mode 100644
index 0000000..3112518
--- /dev/null
+++ b/metalava-model-turbine/src/main/java/com/android/tools/metalava/model/turbine/TurbineTypeModifiers.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.tools.metalava.model.turbine
+
+import com.android.tools.metalava.model.AnnotationItem
+import com.android.tools.metalava.model.TypeModifiers
+
+/** Modifiers for a [TurbineTypeItem]. */
+internal class TurbineTypeModifiers(private val annotations: List<AnnotationItem>) : TypeModifiers {
+    override fun annotations(): List<AnnotationItem> = annotations
+}
